@ARHAT-99

Как передавать данные в argv во время теста?

Новичёк в программирование и при тестирование кода появился вопрос, как мне передать название товара в argv что-бы он начал делать парсинг и в конце начался тест что-бы его проверить
Код для теста main
import unittest
from .main import main

class TestMain(unittest.TestCase):

    def test_main(self):
        site = main() # переменая с функцией
        name_list = ['xiaomi', 'redmi', 'note', '7'] # название товара
        link_product = [{'title': 'Мобильный Телефон Xiaomi Redmi Note 7 PRO (6+128Gb)', 'cost': '12.000 сом'},
                        {'title': 'Мобильный Телефон Xiaomi Redmi Note 7 (6+64Gb)', 'cost': '10.400 сом'},
                        {'title': 'Мобильный Телефон Xiaomi Redmi Note 7 (4+128Gb) EU', 'cost': '11.500 сом'},
                        {'title': 'Мобильный Телефон Xiaomi Redmi Note 7 (3+32Gb) EU', 'cost': '10.000 сом'},
                        {'title': 'Мобильный Телефон Xiaomi Redmi Note 7 (4+64Gb) EU', 'cost': '10.700 сом'}] # результат
        product_link = site.argv=name_list # как отдать тназвание товара что-бы он начал парсить
        self.assertEqual(link_product,product_link)

Код самого main
from sys import argv
from .transform import GadgetTransform
from .extractor import GadgetExtractor

def main():
    if argv[1:]: # если аргумент не пустой, пускай продолжает
        gadget_extractor = GadgetExtractor() # импортирую класс из кода в котором создал url сайта
        product_link = gadget_extractor.get_product_link(name_list=argv[1:])  # принятие аргумента
        product_page = gadget_extractor.get_html(url=product_link) 

        gadget_transform = GadgetTransform() # импорт класса в котором и происходит тестирование
        detal_of_product = gadget_transform.get_data(html=product_page) # отдаю ему html сайта 
и пошел парсинг, но я еще учитывал если нет товара то я ему отвечал что такого нет на сайте
        return (detal_of_product)
    else: # ничего пользователь не ввел так-что отвечаем ему
        print('Ничего не введено')
        exit()


if __name__ == '__main__':
    print(main())
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
@o5a
argv это просто список, можно его самому изменить.
def test_main(self):
        name_list = ['xiaomi', 'redmi', 'note', '7'] # название товара
        argv.extend(name_list) # искусственно добавляем список к argv
        link_product = [{'title': 'Мобильный Телефон Xiaomi Redmi Note 7 PRO (6+128Gb)', 'cost': '12.000 сом'},
                        {'title': 'Мобильный Телефон Xiaomi Redmi Note 7 (6+64Gb)', 'cost': '10.400 сом'},
                        {'title': 'Мобильный Телефон Xiaomi Redmi Note 7 (4+128Gb) EU', 'cost': '11.500 сом'},
                        {'title': 'Мобильный Телефон Xiaomi Redmi Note 7 (3+32Gb) EU', 'cost': '10.000 сом'},
                        {'title': 'Мобильный Телефон Xiaomi Redmi Note 7 (4+64Gb) EU', 'cost': '10.700 сом'}] # результат
        product_link = main() # просто запускаем основной скрипт, список мы уже передали
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы