Mic*_*ali 18 python unit-testing pytest pycharm
我正在尝试创建不基于单元测试的测试类.
这个类下的这个方法
class ClassUnderTestTests:
def test_something(self):
Run Code Online (Sandbox Code Playgroud)
从命令行调用py.test或在PyCharm中运行此测试时(在它自己的模块上),无法检测并运行.
这个
def test_something(self):
Run Code Online (Sandbox Code Playgroud)
可以检测并运行类外的相同方法.
我想把我的测试分组在类下,除非我遗漏了一些我正在遵循py.test规范来做到这一点.
环境:Windows 7,pyCharm,py.test设置为测试运行器.
twi*_*wil 29
按照惯例,它会搜索
测试前缀测试类(没有init方法)
例如.
# content of test_class.py
class TestClass:
def test_one(self):
x = "this"
assert 'h' in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档
Ste*_*eve 17
接受的答案并非不正确,但不完整。此外,它包含的文档链接不再有效,该答案的评论中更新的链接也不再有效。
现在可以在此处找到当前文档。该文档的相关部分是:
- ...
- 在这些目录中,搜索test_*.py或*_test.py文件,按其测试包名称导入。
- 从这些文件中收集测试项目:
- ...
- Test前缀的测试函数或Test前缀的测试类中的方法(没有__init__方法)
接受的答案中缺少的关键位是,类名不仅必须以Test开头并且没有__init__方法,而且包含该类的文件的名称必须是test_*.py形式之一或*_test.py。
我在这里被绊倒的地方(我想许多其他人也会被绊倒)是,我通常命名只包含类定义的 Python 源文件,以直接反映类的名称。因此,如果我的类名为MyClass ,我通常将其代码放在名为MyClass.py的文件中。然后,我将类的测试代码放入名为TestMyClass.py的文件中。这不适用于 PyTest。为了让 PyTest 对我的测试类执行其操作,我需要将该类的文件命名为test_MyClass.py或MyClass_test.py。我选择了最后一种形式,这样我通常会在文件名中添加一个“ _test ”后缀,否则我会选择需要命名的文件,以便 PyTest 解析它们以查找测试。
| 归档时间: |
|
| 查看次数: |
12977 次 |
| 最近记录: |