当前位置:网站首页>Pytest's collection use case rules and running specified use cases

Pytest's collection use case rules and running specified use cases

2022-07-06 09:00:00 Automated test seventh uncle

Preface

Hello, guys , Today I will explain it to you pytest How to collect the use cases we have written ? How can we run individual use cases or batch use cases ? Now I'll answer for you one by one !

One 、Pytest Collect use case principles

First of all, we will create our project according to the following directory structure

[pyttest Rules for searching test cases ]
    |[ Test case catalog 1]
    |    |__init__.py
    |    |test_ Test module 1.py
    |    |test_ Test module 2.py
    |[ Test case catalog 2]
    |    |__init__.py
    |    |test_ The test case 1.py
    |    | The test case .py
    |test_ Test module .py
    | The test case 2.py    

Two 、 Code instance

# test_ Test module 1.py
def test_testFunc1():
    print('\n I'm a test case ! in test_testFunc1')
    assert 1 == 1

def func1():
    print(' I'm not a test case ')
    assert 1 == 1
# test_ Test module 2.py
class TestClass1(object):

    def test_class_func1(self):
        print('\n  I'm a test case in a class  in test_class_func1')
        assert 1 == 1

    def class_func1(self):
        print(' I'm a normal function in a class !')
# test_ The test case 1.py

class TestClass2(object):

    def test_class_func2(self):

        print('\n  I'm a test case in a class  in test_class_func2',)
        assert 1 == 1

    def class_func2(self):
        print(' I'm a normal function in a class !')


def test_testFunc2():
    print('\n I'm a test case  in test_testFunc2!')
    assert 1 == 1


def func2():
    print(' I'm not a test case ')
    assert 1 == 1
#  The test case .py

def test_testFunc3():
    print('\n I'm a test case ! in  The test case .py')
    assert 1 == 1


def func3():
    print(' I'm not a test case ')
    assert 1 == 1
# test_ Test module 3.py

def test_testFunc4():
    print('\n I'm a test case ! in test_testFunc4')
    assert 1 == 1


def func4():
    print(' I'm not a test case ')
    assert 1 == 1


class TestClass3(object):

    def test_class_func3(self):
        print('\n  I'm a test case in a class  in test_class_func3')
        assert 1 == 1

    def class_func3(self):
        print(' I'm a normal function in a class !')
#  The test case 2.py

def test_testFunc5():
    print('\n I'm a test case ! in test_testFunc5')
    assert 1 == 1

def func5():
    print(' I'm not a test case ')
    assert 1 == 1

Let's use cmd Command to execute this project , See how many use cases are valid ? open cmd Switch to the root of the project to execute the command pytest -v

D:\pytest Search test case rules >pytest -v
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 6 items

test_ Test module 3.py::test_testFunc4 PASSED                                 [ 16%]
test_ Test module 3.py::TestClass3::test_class_func3 PASSED                   [ 33%]
 Test case catalog 1/test_ Test module 1.py::test_testFunc1 PASSED                   [ 50%]
 Test case catalog 1/test_ Test module 2.py::TestClass1::test_class_func1 PASSED     [ 66%]
 Test case catalog 2/test_ The test case 1.py::TestClass2::test_class_func2 PASSED     [ 83%]
 Test case catalog 2/test_ The test case 1.py::test_testFunc2 PASSED                   [100%]

========================== 6 passed in 0.59 seconds ===========================

The running result shows that there are 6 Use cases passed, And a detailed list of which 6 strip , So the use cases we wrote above are not just 6 strip , So why only run 6 Striped cloth ? Combining the above code structure with our execution results , We should be able to find such laws

Pytest Will start from the directory we are currently running to find all directories , Looking to test_ The beginning of the file and all of the files with test_ The functions that start with and start with Test Classes and classes that start with test_ The first function is the test case . That's why it only works 6 Test cases !

3、 ... and 、Pytest Run the specified test case

We still use the above project as a demonstration (cdm Switch to the root of the project )

3.1 Run all use cases in the specified directory

We specify the run test case Directory 1 All the use cases in it (pytest -v Test case catalog 1)

D:\pytest Search test case rules >pytest -v  Test case catalog 1
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 2 items

 Test case catalog 1/test_ Test module 1.py::test_testFunc1 PASSED                   [ 50%]
 Test case catalog 1/test_ Test module 2.py::TestClass1::test_class_func1 PASSED     [100%]

========================== 2 passed in 0.05 seconds ===========================
#  This will only search and specify all the uses under the specified directory 

3.2 Run all use cases in the specified file

We specify the run test_ Test module 1.py(pytest -v Test case catalog 1/test_ Test module 1.py )

D:\pytest Search test case rules >pytest -v  Test case catalog 1/test_ Test module 1.py
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 1 item

 Test case catalog 1/test_ Test module 1.py::test_testFunc1 PASSED                   [100%]

========================== 1 passed in 0.09 seconds ===========================
#  Run all use cases under the specified file 

3.3 Run the test class in the specified file

We specify the run test_ Test module 2.py Test class in Testclass1(pytest -v Test case catalog 1/test_ Test module 2.py::TestClass1)

D:\pytest Search test case rules >pytest -v  Test case catalog 1/test_ Test module 2.py::TestClass1
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 1 item

 Test case catalog 1/test_ Test module 2.py::TestClass1::test_class_func1 PASSED     [100%]

========================== 1 passed in 0.05 seconds ===========================
#  Run all tests in the specified test class with 

3.4 Run the specified test case function

We specify the run test_testFunc1(pytest -v Test case catalog 1/test_ Test module 1.py::test_testFunc1)

D:\pytest Search test case rules >pytest -v  Test case catalog 1/test_ Test module 1.py::test_testFunc1
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 1 item

 Test case catalog 1/test_ Test module 1.py::test_testFunc1 PASSED                   [100%]

========================== 1 passed in 0.03 seconds ===========================

summary

Collect use case rules : Search all to test_ The first test file , With Test The first test class , With test_ The first test function

Execute use case rules : from -v We should be able to find the execution information of the parameter output , Run the use cases in the specified directory Use command pytest Catalog / Catalog that will do ; Run the specified file using pytest Catalog / file that will do ; Run the specified class or function Use command pytest Catalog / file :: Class name :: Function name perhaps pytest Catalog / file :: Function name

Search case rules are also our named case files , Test class , Rules for testing functions ; Execute the specified test case to remember the rules .

Finally, that's all for today's article. My favorite friends can like comments, collect and pay attention , Your support is the motivation of the author .

原网站

版权声明
本文为[Automated test seventh uncle]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060856581827.html