R
R
Rahat2020-04-26 14:10:45
Python
Rahat, 2020-04-26 14:10:45

How to pass data to argv during test?

I am new to programming and when testing the code, the question arose, how can I pass the name of the product to argv so that it starts parsing and at the end the test starts to check it
Code for the main test

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 code itself
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())

Answer the question

In order to leave comments, you need to log in

1 answer(s)
O
o5a, 2020-04-27
@o5a

argv is just a list, you can change it yourself.

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() # просто запускаем основной скрипт, список мы уже передали

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question