Pytest - 从单个文件运行多个测试

时间:2016-07-12 11:31:54

标签: python selenium pytest

我使用Pytest(Selenium)来执行我的功能测试。我将测试拆分为以下结构中的2个文件:

My_Positive_Tests.py

class Positive_tests:


  def test_pos_1():
    populate_page()
    check_values()

  def test_pos_2():
    process_entry()
    validate_result()

My_Negative_Tests.py

class Negative_tests:
  def test_neg_1
    populate_page()
    validate_error()

断言在函数内完成(check_values,validate_result,validate_error)。 我试图找到一种从单个文件运行所有测试的方法,以便主测试文件看起来像:

My_Test_Suite.py

test_pos_1() 
test_pos_2()
test_neg_1()

然后从命令行执行:

py.test --tb=short "C:\PycharmProjects\My_Project\MyTest_Suite.py" --html=report.html

有可能做这样的事吗?我一直在搜索,并且无法找到如何将调用这些测试放在一个文件中。

3 个答案:

答案 0 :(得分:5)

您不必手动运行测试。 Pytest finds and executes them automatically

# tests/test_positive.py
def test_pos_1():
    populate_page()
    check_values()

def test_pos_2():
    process_entry()
    validate_result()

# tests/test_negative.py
def test_neg_1():
    populate_page()
    validate_error()

如果你再运行

py.test

应该自动接听它们。

您也可以选择单个文件

py.test -k tests/test_negative.py

或单个测试

py.test -k test_neg_1

答案 1 :(得分:1)

使用_test.py或以Test结束文件名和测试。类应以$ py.test --cov=files/ tests/

开头

目录示例:
| - 文件
| - | - stuff_in stuff
| - | - | - blah.py
| - | - example.py
|
| - 测试
| - | - stuff_in stuff
| - | - | - test_blah.py
| - | - test_example.py

在终端:$ py.test tests/或仅$ py.test tests/,如果您不需要代码覆盖率。测试目录文件路径必须位于当前目录路径中。或者是一个确切的文件路径

使用上述终端命令(test_),pytest将在 tests / 目录中搜索以# imports here def test_try_this(): assert 1 == 1 # or class TestThis: assert 1 == 0 # or even: def what_test(): assert True 开头的所有文件。该文件也是如此。

test_example.py

def foo(np.ndarray[np.complex64_t, ndim=1] arr, int arr_sz):
    return cmylib.foo(<cmylib.cmplx64 *>&arr[0], arr_sz)

答案 2 :(得分:0)

您需要更改班级名称

class Positive_tests: to--> class Test_Positive: 

班级名称也应该以&#34; Test&#34;为了被Pytest发现。如果你不想使用&#34;测试&#34;在您的班级名称前面,您也可以配置官方文档here