2016-02-10 8 views
2

У меня есть набор методов тестирования, которые мне нужно запустить, а затем после каждого теста я хочу обновить результаты в другом месте. Это то, что я есть:Можно ли передать параметр в устройство для разрыва в python?

@pytest.mark.testcasename('1234') 
@pytest.mark.parametrize('lang', 
         ["EN", "FR"]) 
def test_text(self, request, base_url, lang): 
    testrail_conn = TestrailHelper() 
    test_case_id = request.node.get_marker("testcasename").args[0] 
    base_url = base_url.replace("testEN", "testFR") if lang == "FR" else base_url 
    self.navigate(base_url) 
    self.wait_for_page_loaded() 
    results = self.check_text(lang) 
    try: 
     assert results 
     testrail_conn.update_test_status(test_case_id, test_result=1) 
    except AssertionError: 
     testrail_conn.update_test_status(test_case_id, test_result=5) 

Моя проблема заключается в том, что я хочу, чтобы update_test_status быть в арматуре, где демонтажа я могу передать мое test_result к нему. Таким образом, мне не нужно писать одинаковый код для каждого метода тестирования. Любые идеи?

Благодаря

+2

Вы всегда можете хранить вещи на 'TestCase 'экземпляр. Таким образом, он будет доступен во время срыва. Я не думаю, что это будет лучшая абстракция для использования в этом случае. Как насчет пользовательского декоратора или менеджера контекста? –

+0

@SvenMarnach is right –

+0

Посмотрите на некоторые из плагинов. http://stackoverflow.com/questions/26259990/execute-code-if-a-test-fails-with-py-test имеет приятный пример – second

ответ

0

Вы можете хранить что-то на request объекта, например на request.node - см. the docs. В качестве альтернативы вы можете использовать свой прибор (как аргумент) из теста и хранить что-то там - или заставить прибор возвращать/давать какую-то структуру данных для хранения вещей.