2017一起做网店网站,seo网络优化专员是什么意思,行业网站 源码,上海网站建设公司skyPytest是一个基于python的测试框架#xff0c;用于编写和执行测试代码。pytest主要用于API测试#xff0c;可以编写代码来测试API、数据库、UI等。 pytest是一个非常成熟的全功能的Python测试框架#xff0c;主要有以下几个优点#xff1a; 简单灵活#xff0c;容易上手。…Pytest是一个基于python的测试框架用于编写和执行测试代码。pytest主要用于API测试可以编写代码来测试API、数据库、UI等。 pytest是一个非常成熟的全功能的Python测试框架主要有以下几个优点 简单灵活容易上手。pytest的语法简洁明了易于理解和使用。 支持参数化。pytest可以通过装饰器或 fixture 方法对测试用例进行参数化提高测试用例的覆盖率。 能够支持简单的单元测试和复杂的功能测试还可以用来做selenium/appnium等自动化测试、接口自动化测试pytestrequests。 pytest具有很多第三方插件并且可以自定义扩展比较好用的如pytest-selenium集成selenium、pytest-html完美html测试报告生成、pytest-rerunfailures失败case重复执行、pytest-xdist多CPU分发等。 测试用例的skip和xfail处理。pytest提供了灵活的跳过测试用例或预期失败的机制可以根据需要在测试过程中跳过某个或某些测试用例。 可以很好的和jenkins集成。pytest可以和Jenkins等持续集成工具无缝集成方便进行自动化测试和报告生成。 report框架----allure 也支持了pytest。pytest可以和Allure报告框架集成生成详细的HTML测试报告方便进行测试结果分析和展示。 pytest是一个功能强大、灵活易用的Python测试框架适用于各种类型的测试需求具有很高的实用价值。
安装
# 安装
pip install pytest# 帮助
pytest -h格式要求
文件名称test_*.py 或 *_test.py 函数名test开头
常用参数
-s 显示标准输出相当于–capturenopytest默认是不输出print logging等的输出的除非assert失败。 -v 显示详细报告。 -k 按照关键词查找测试用例。 -q 显示简洁报告。 -m 只运行被标记的测试用例。 -x 用例失败时立即停止测试。 -c file从 file 加载配置文件。 -l (--showlocals) 用例失败信息回溯时显示局部变量及其值。 -rsxX 报告®测试用例被跳过(s)、预计失败(x)、预计失败但实际通过(X)的原因。 -strict禁止使用未在配置文件(pytest.ini)注册的 mark 标记。 --maxfailn失败n后停止运行测试。 –rerunsnum失败用例重跑num次。需要安装 pytest-rerunfailures 插件模块。 --lf (--last-failed)仅执行上次失败的用例。如果没有失败的用例或者没找到缓存文件默认是运行所有的用例。 --lfnf [all, none]与 --lf 同时使用all 代表找不到用例或缓存文件时执行所有用例none 代表找不到用 例或缓存文件时不执行测试用例。
pytest.main([--lf,--lfnfnone, test.py])--ff (--failed-first)先执行失败的用例再执行其他用例。 --nf (--new-first)首先从新文件或新修改的用例开始运行测试。 --sw (--stepwise)在测试失败时退出且下一次在测试失败的用例开始测试。 --stepwise-skip忽略第一个失败的测试在第二次测试失败时退出。 --keep-duplicates 不断重复的测试。 --durationsn显示执行最慢的n条用例。注意除非添加参数 -vv默认情况下否则pytest不会显示0.01s的测试时间。 --fixtures显示所有可用的 fixture。 --tbstyle堆栈回溯信息打印模式 (auto/long/short/line/native/no])。 --setup-show显示fixture执行步骤。 --cache-show[CACHESHOW]显示缓存内容不执行收集或测试。 --cache-clear运行前清除pytest缓存。 --continue-on-collection-errors即使发生收集(收集用例阶段)错误也强制执行测试。 --rootdirROOTDIR定义测试的根目录。 --colorcolor终端输出的颜色(yes/no/auto)。 --collect-only只收集用例不执行。 --assertMODE “plain”不执行任何断言调试“rewrite”重写测试模块中的assert语句以提供assert表达式信息
基础测试
文件名test_one.py
# 测试函数
def test_division():assert 1/1.01# 测试类
class TestOne:def test_addition(self):测试方法assert 1 1 2def testsquare(self):测试方法assert 2*2 3def tesequality():无效assert 10 11运行
pytest -v-v表示查看详情。
找到3个测试用例1个失败2个通过。
测试子集
按照函数名查找子集
test_sub.py
# 测试子集
class TestSub:def test_compare_one(self):测试方法assert 1 1 2def test_compare_two(self):测试方法assert 1 2 3pytest -v -k compare使用pytest -k substring命令的-k参数值来过滤函数名。
分组标记
# -*- coding: utf-8 -*-
import pytest# 测试子集
class TestGroup:pytest.mark.groupdef test_group_one(self):测试方法assert 1 1 2pytest.mark.groupdef test_group_two(self):测试方法assert 1 2 3pytest -v -m group这里用装饰器 pytest.mark.group来标记函数然后用pytest -v -m group中的-m来寻找这个分组标记。
夹具函数
import pytest# 测试fixture
class TestFixture:pytest.fixturedef input_value(self):return 36def test_division(self, input_value):测试方法assert input_value / 6 6这里用pytest.fixture修饰的函数input_value提前准备了数据以供test_division用。这种方法只能在一个文件里用如果想全局使用可以配置Conftest.py。
参数化
import pytestpytest.mark.parametrize(num, output,[(1,11),(2,22),(3,35),(4,44)])
def test_multiplication_11(num, output):assert 11*num output
pytest test_parame.py -v跳过测试
import pytest
pytest.mark.xfail
pytest.mark.great
def test_greater():num 100assert num 100pytest.mark.xfail
pytest.mark.great
def test_greater_equal():num 100assert num 100pytest.mark.skip
pytest.mark.others
def test_less():num 100assert num 200
pytest test_xfail_skip.py -vpytest.mark.xfail标记为xfail状态。 pytest.mark.skip直接跳过。 更多请见官网。