【问题标题】:pytest run tests inside a class with a constructorpytest 在具有构造函数的类中运行测试
【发布时间】:2020-02-27 23:09:03
【问题描述】:

我想为 API 编写一个测试套件。我的项目树看起来像: project tree

我需要一个“客户端”文件,其中包含我们初始化所有辅助函数的类(例如,使用参数、断言、配置等发送的实际请求)。和实际的测试类。所以我有

class Client()
  __init__()
  def helper_function()
class TestBackend(Client)
  __init__()
  def test_something()

然后我尝试使用 pytest 运行我的测试。我不断得到

PytestWarning:无法收集测试类“TestBackend”,因为它有 init 构造函数。

正如py.test skips test class if constructor is defined 所述,这是预期的行为。 SO链接到这个documentation 但是,出于对所有神圣事物的热爱,我无法找到解决我遇到的问题的方法,而且我认为这不是经常需要的案例。

【问题讨论】:

    标签: python python-3.x automation pytest qa


    【解决方案1】:

    是的,你是对的,如果在类中定义了 "__init__()",那么 py-test 将不会收集类用于测试目的。但是,如果你想初始化所有的辅助方法和文件,那么你可以在 pytest.ini 配置文件的 pythonpaths 中添加该文件,如下所示:-

    [pytest]
    python_paths = . <path to helper file>
    

    从那时起,您可以直接在测试脚本中导入该特定文件。

    希望你能找到答案。

    【讨论】:

    • 这绝对是解决问题的方法——但我不敢相信这被认为是一种好的编码实践。这将是维护和调试的噩梦!
    • 我还要在哪里实例化我的助手类?
    • 其实ini文件是用来改变pytest模块的默认配置的。您可以在夹具本身的测试脚本中创建该类的对象。 docs.pytest.org/en/latest/fixture.html
    • 实际上我错过的是套件应该继承自 unittest.TestCase 以使所有这些工作。感谢 Nikilesh 抽出宝贵时间:)
    猜你喜欢
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    相关资源
    最近更新 更多