有没有办法选择pytest测试从文件运行?例如,包含要执行的测试列表的文件foo.txt:
tests_directory/foo.py::test_001
tests_directory/bar.py::test_some_other_test
Run Code Online (Sandbox Code Playgroud)
或者有没有办法从pytest的不同目录中选择多个测试,测试名称中没有共同的模式?
py.test -k <pattern> 允许单一模式.
一种选择是针对每个测试使用pytest.mark,但我的要求是运行来自不同文件的不同测试组合.
有没有办法为每个模式指定多个模式和测试文件名?或者有没有办法在文件中指定确切的测试路径并将该文件作为pytest的输入提供?或者是否有可用于此目的的钩子功能?
我正在使用pytest.我在目录中有两个文件.在其中一个文件中有一个长时间运行的测试用例,它会生成一些输出.在另一个文件中有一个读取该输出的测试用例.如何确保两个测试用例的正确执行顺序?除了以正确的顺序将测试用例放在同一个文件中之外,还有其他选择吗?
我正在编写selenium测试,包含一组类,每个类包含几个测试.每个类当前打开然后关闭Firefox,这有两个结果:
我可以通过添加睡眠来解决错误54,但它仍然会超级慢.
所以,我想要做的是在所有测试类中重用相同的Firefox实例.这意味着我需要在所有测试类之前运行一个方法,在所有测试类之后运行另一个方法.因此,'setup_class'和'teardown_class'是不够的.
我按以下方式编写测试用例。
# content of test_class.py
class TestClass(object):
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)
test_two 依赖于 test_one,因此执行的顺序很重要,当您将测试分组到类中时,强制执行测试执行顺序的约定是什么?
我有一些带有测试的脚本,我需要按照我明确定义的执行顺序运行这些测试。
看起来像:
# one.py
import some lib
class Foo():
def makesmth(self)
script
Run Code Online (Sandbox Code Playgroud)
然后我制作了测试文件:
# test_one.py
import pytest
import some lib
class TestFoo():
def test_makesmth(self):
try/except/else assert etc.
Run Code Online (Sandbox Code Playgroud)
所以它看起来简单而正确。当我运行文件 test_one.py 时一切正常。我的脚本测试包看起来像:
package/
|-- __init__.py
|-- scripts
| |-- one.py
| |-- two.py
|-- tests
| |-- test_one.py
| |-- test_two.py
Run Code Online (Sandbox Code Playgroud)
当我尝试收集测试时
pytest --collect-only
Run Code Online (Sandbox Code Playgroud)
它给出了非字母顺序和随机的测试顺序。
我可以在哪里写有关测试顺序的信息?非字母,就像我想像 b、a、c、e、d 一样开始测试 - 不是随机的,不是按字母顺序的
试图制作文件tests.py:
import pytest
from tests.test_one import TestFoo
from tests.test_two import TestBoo etc.
Run Code Online (Sandbox Code Playgroud)
当我试图运行它,显示错误,因为这些进口是在我不明白的方式进行(试图使一个命名为testFoo b TestBoo并重新命名该方法定义的方式测试文件,但仍然是没有按”工作)。
对不起,如果我的问题看起来不专业,我是初级问答,几乎没有自动测试经验。