• Запуск тестов с опции командной строки?

    Я бы более явно разметил все тесты mark.url1 .. mark.urln.
    Но если хотите пропускать тесты на основе фикстур то тогда вам в помощь pytest_collection_modifyitems

    def pytest_collection_modifyitems(items):
        mark = pytest.mark.skip('Test is not present in test run.')
        # Тут любая магия которая придет к вам в голову.
        for item in items:
            if item.config.getoption('url2') is None:
                item.add_marker(mark)
    
    # UPD я бы посмотрел, в сторону того что бы не пложить фикстуру request_get_service, а прокидывать ей url, 
    # запрашивая её в нужных местах,  что-то типо такого.
    #########################
    @pytest.fixture()
    def request_get_service(requests, url):
        return requests.get(url)
    
    
    #########################
    @pytest.fixture()
    def use_url2(request_get_service, requests):
        url = requests.config.getoption('url2')
        return request_get_service(requests, url)
    
    
    @pytest.fixture()
    def use_url3(request_get_service, requests):
        url = requests.config.getoption('url2')
        return request_get_service(requests, url)
    Ответ написан
    Комментировать
  • Запуск тестов с опции командной строки?

    @javedimka
    Хочу сока
    import pytest
    
    @pytest.fixture()
    def fixture1():
        print "Fixture 1"
    
    @pytest.fixture()
    def fixture2():
       print "Fixture 2"

    В pytest_addoption в опциональных аргументах default убрать кавычки вокруг None и использовать
    Маркер skipif:
    import pytest
    
    def skip_non_matching_url(option):
        return pytest.mark.skipif(
            not getattr(pytest.config.option, option, None),
            reason="Url doesn't match command line option"
        )
    
    @skip_non_matching_url("url2")
    def test_my_url2(fixture2):
        print "Test my url2"
    
    @skip_non_matching_url("url1")
    def test_my_url1(fixture1):
        print "Test my ulr1"


    $ python -m pytest -vs --url1 ya.ru
    
    collected 2 items
    
    test_something.py::test_my_url2 SKIPPED
    test_something.py::test_my_url1 Fixture 1
    Test my ulr1
    PASSED
    
    
    $ python -m pytest -vs --url2 ya.ru
    
    collected 2 items
    
    test_something.py::test_my_url2 Fixture 2
    Test my url2
    PASSED
    test_something.py::test_my_url1 SKIPPED


    Или кастомные маркеры:

    import pytest
    
    @pytest.mark.url2
    def test_my_url2(fixture2):
        print "Test my url2"
    
    @pytest.mark.url1
    def test_my_url1(fixture1):
        print "Test my ulr1"


    $ python -m pytest -vs -m url2
    
    collected 2 items
    
    test_something.py::test_my_url2 Fixture 2
    Test my url2
    PASSED
    
    
    $ python -m pytest -vs -m url1
    
    collected 2 items
    
    test_something.py::test_my_url1 Fixture 1
    Test my ulr1
    PASSED
    Ответ написан
    2 комментария
  • Стоит ли регистрировать домен в зоне .xyz?

    mxms
    @mxms
    IT voodoo
    Да xyz его знает :-)
    Ответ написан
    Комментировать