pyTest

本文介绍了PyTest的安装、用例编写、运行方式、故障处理、测试筛选、测试标记、测试执行时间和从Python代码中调用PyTest的方法。详细讲解了fixture的使用,包括不带scope限定范围的fixture示例,以及如何在测试之间共享数据。
摘要由CSDN通过智能技术生成

1、安装
命令行pip install pytest
pycharm安装
下载pytest包,python setup.py install

2、start
先创建一个简单的用例:
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
注意:用例的名字必须是test开头,如果写在类里面则需要类以Test开头命名:
查看下述代码运行结果说明上面的解释:
代码:


 


def func(x):
    return x + 1

def testanswer():
    assert func(3) == 4

def add_test():
    assert 3-1==2

class A:
    def test_div( self ):
        assert 9/3==3

class TestA:
    def test_x( self ):
        assert 3*6==18
    def ddf( self ):
        assert 1==1

结果

C:\Users\18566\Desktop\APPAutoTest\pytest_leran>pytest -v
Test session starts (platform: win32, Python 3.8.1, pytest 5.4.3, pytest-sugar 0.9.4)
cachedir: .pytest_cache
metadata: {'Python': '3.8.1', 'Platform': 'Windows-10-10.0.18362-SP0', 'Packages': {'pytest': '5.4.3', 'py': '1.9.0', 'pluggy': '0.13.1'}, 'Plugins': {'allure-pytest': '2.8.16', 'assume': '2.2.1', 'cov':
 '2.10.0', 'emoji': '0.2.0', 'forked': '1.2.0', 'html': '2.1.1', 'metadata': '1.10.0', 'ordering': '0.6', 'repeat': '0.8.0', 'rerunfailures': '9.0', 'sugar': '0.9.4', 'timeout': '1.4.1', 'xdist': '1.33.0
'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_202'}
rootdir: C:\Users\18566\Desktop\APPAutoTest\pytest_leran
plugins: allure-pytest-2.8.16, assume-2.2.1, cov-2.10.0, emoji-0.2.0, forked-1.2.0, html-2.1.1, metadata-1.10.0, ordering-0.6, repeat-0.8.0, rerunfailures-9.0, sugar-0.9.4, timeout-1.4.1, xdist-1.33.0
collecting ... 
 test_sample.py::testanswer ✓                                                                                                                                                                50% █████
     
 test_sample.py::TestA.test_x ✓                                                                                                                                                             100% █████
█████

Results (0.18s):
       2 passed

查看用例只收集了test开头的用例和Test开头的类(类里面也是查找test开头的方法)的用例。
100%显示已经执行完成所有的用例。
运行方式可以直接在pycharm里面或者IDE等工具进入terminal执行pytest可以直接找到符合命名规则的用例并执行。
指定测试用例文件则pytest 文件名
每个收集的测试都分配有一个唯一的nodeid名称,该名称由模块文件名后跟说明符(例如类名,函数名和参数化参数)组成,并用::字符分隔
指定测试文件具体的测试函数则 pytest 文件名::测试函数名
指定测试文件具体的测试类 pytest 文件名::类名
指定测试文件具体的测试方法 pytest 文件名::类名::方法名
如果不指定则默认在当前目录查看所有符合的用例。
没有特殊指定,以test_.py或者_test.py的文件都会被作为测试用例文件。

2.1 pytest遇到失败直接停止
pytest -x
遇到失败直接停止

2.2 pytest遇到失败停止设置失败次数
pytest --maxfail==2
遇到2次失败则停止

2.3 pytest通过关键字表达式运行测试
pytest -k “Myclass and not method”
运行myClass的类且不运行method名字的方法的
这个myclass和method的名字不区分大小写
上面的示例将运行,TestMyClass.test_something 但不会运行TestMyClass.test_method_simple

2.4pytest通过标记表达式运行测试
pytest -m slow
将运行用@pytest.mark.slow装饰器装饰的所有测试

2.5 pytest带参数运行输出 详细的结果
pytest -r
在测试会话结束时显示“简短的测试摘要信息”,从而使得在大型测试套件中轻松获得所有失败,跳过,xfails等的清晰画面
-r选项后面接受多个字符
适配的字符有:
这是可以使用的可用字符的完整列表:

f -失败

E -错误

s -跳过

x -xfailed

X -xpass

p -通过

P -通过输出

a -除 pP

A -全部

N-无,可用于不显示任何内容(fE默认设置)

比如:
仅查看失败和跳过的测试:pytest -rfs
仅查看所有通过的测试:pytest -rp

2.6 分析测试执行持续时间
获取最慢的10个测试持续时间的列表:
pytest --durations=10
默认情况下,除非-vv(打印详细信息)在命令行传递,否则pytest不会显示太短执行的执行时间,比如<0.01s.

2.7 从Python代码中调用pytest
上述介绍了一部分命令参数,但是都是直接在命令行执行的。在python中执行则需要导入pytest,然后用pytest.main()函数执行。
传递参数则是向main传入一个列表,如下格式:
pytest.main(["-v","-s",“class::fucntion”])

3 pytest fixtures不加参数调用
pytest fixture是对setup和teardown的提升。
之前unittest setup和teardown是针对测试用例前准备环境和测试用例执行后销毁环境,或者是setup_class和teardown_class。
fixtures可以声明是在test的函数、模块、类或者整个session生效。
fixtures也可以进行参数化,测试用例通过配置和选项运行fixtures,fixtures可以在不同用例多次调用。
fixtures定义是用装饰器@pytest.fixture
简单例子示例:
test_smtpsimple.py
 


```css
import pytest
@pytest.fixture
def smtp_connection():
    import smtplib
    return smtplib.SMTP("smtp.qiye.163.com", 25, timeout=15)
def test_ehlo(smtp_connection):
    response, msg = smtp_connection.ehlo()
    print(response,msg)
    assert response == 250
    assert 0  # for demo purposes

上述是一种使用fixture的方式,smtp_connection用装饰器@pytest.fixture
在测试用例test_ehlo中调用smtp_connection,这种方式可以在test_ehlo调用smtp_connection的方法或者参数等.
当运行pytest时会自动去找@pytest.fixture装饰器装饰的函数
运行结果如下:
 

C:\Users\18566\Desktop\APPAutoTest\pytest_leran>pytest -vv
Test session starts (platform: win32, Python 3.8.1, pytest 5.4.3, pytest-sugar 0.9.4)
cachedir: .pytest_cache
metadata: {'Python': '3.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值