Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中是否可以将参数传递给拆卸装置?_Python_Pytest_Finalizer_Fixture_Teardown - Fatal编程技术网

在python中是否可以将参数传递给拆卸装置?

在python中是否可以将参数传递给拆卸装置?,python,pytest,finalizer,fixture,teardown,Python,Pytest,Finalizer,Fixture,Teardown,我有很多测试方法需要运行,然后在每次测试之后,我想在其他地方更新我的结果。 这就是我所拥有的: @pytest.mark.testcasename('1234') @pytest.mark.parametrize('lang', ["EN", "FR"]) def test_text(self, request, base_url, lang): testrail_conn = TestrailHelper() test_case

我有很多测试方法需要运行,然后在每次测试之后,我想在其他地方更新我的结果。 这就是我所拥有的:

@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_状态处于拆卸夹具中,在该夹具中我可以将测试结果传递给它。这样我就不需要为每个测试方法编写相同的代码。。 有什么想法吗


谢谢

您可以在
请求
对象上存储某些内容,例如在
请求.节点上
-请参阅。或者,您可以使用测试中的fixture(作为参数),并在那里存储一些东西,或者让fixture返回/生成某种数据结构来存储东西。

您可以始终在
TestCase
实例上存储东西。这样,它将在拆卸过程中可用。我认为在这种情况下,这不是最好的抽象。自定义装饰器或上下文管理器如何?@SvenMarnach是正确的。请看一些插件挂钩。有一个很好的例子谢谢@SvenMarnach。我试试看。我只是觉得我可以用py.test中的fixture来制作它work@SvenMarnachpytest通常不提供
TestCase
实例,pytest可以使用简单的函数,而不是强制类。