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

Chr*_*G29 5 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()
Run Code Online (Sandbox Code Playgroud)

My_Negative_Tests.py

class Negative_tests:
  def test_neg_1
    populate_page()
    validate_error()
Run Code Online (Sandbox Code Playgroud)

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

My_Test_Suite.py

test_pos_1() 
test_pos_2()
test_neg_1()
Run Code Online (Sandbox Code Playgroud)

然后从命令行我将执行:

py.test --tb=short "C:\PycharmProjects\My_Project\MyTest_Suite.py" --html=report.html
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?我一直在寻找并且无法找到如何将调用这些测试放在一个文件中.

Com*_*sky 6

文件名开始并以 .test_或 . 结尾_test.py。课程应该开始于Test

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

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

使用上面的终端命令( ),pytest将在tests/$ py.test tests/目录中搜索所有以.开头的文件。文件也是如此。test_

测试示例.py

# imports here

def test_try_this():   
    assert 1 == 1
# or
class TestThis:
    assert 1 == 0
# or even:
def what_test():
    assert True
Run Code Online (Sandbox Code Playgroud)


Nil*_*ner 5

您不必手动运行测试.Pytest自动查找并执行它们:

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

def test_pos_2():
    process_entry()
    validate_result()
Run Code Online (Sandbox Code Playgroud)

# tests/test_negative.py
def test_neg_1():
    populate_page()
    validate_error()
Run Code Online (Sandbox Code Playgroud)

如果你然后运行

py.test
Run Code Online (Sandbox Code Playgroud)

它们应该被自动拾取.

然后,您还可以选择单个文件

py.test -k tests/test_negative.py
Run Code Online (Sandbox Code Playgroud)

或单次测试

py.test -k test_neg_1
Run Code Online (Sandbox Code Playgroud)