当前位置: 首页 > news >正文

广西建设领域证书查询官方网站wordpress小程序不能评论

广西建设领域证书查询官方网站,wordpress小程序不能评论,阿里云网站如何建设视频,连云港网站排名优化如何区分这两者#xff0c;很简单unittest作为官方的测试框架#xff0c;在测试方面更加基础#xff0c;并且可以再次基础上进行二次开发#xff0c;同时在用法上格式会更加复杂#xff1b;而pytest框架作为第三方框架#xff0c;方便的地方就在于使用更加灵活#xff0…如何区分这两者很简单unittest作为官方的测试框架在测试方面更加基础并且可以再次基础上进行二次开发同时在用法上格式会更加复杂而pytest框架作为第三方框架方便的地方就在于使用更加灵活并且能够对原有unittest风格的测试用例有很好的兼容性同时在扩展上更加丰富可通过扩展的插件增加使用的场景比如一些并发测试等 Pytest 安装 pip安装 pip install pytest测试安装成功 pytest --helppy.test --help检查安装版本 pytest --version Pytest 示例 Pytest编写规则: 测试文件以test_开头以_test为结尾测试的类以Test开头测试的方法以test_开头断言使用基本的assert test_example.py def count_num(a: list) - int:return len(a)def test_count():assert count_num([1, 2, 3]) ! 3执行测试 pytest test_example.py 执行结果 C:\Users\libuliduobuqiuqiu\Desktop\GitProjects\PythonDemo\pytestpytest test_example.py -vtest session starts platform win32 -- Python 3.6.8, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 -- d:\coding\python3.6\python.exe cachedir: .pytest_cache rootdir: C:\Users\libuliduobuqiuqiu\Desktop\GitProjects\PythonDemo\pytest plugins: Faker-8.11.0 collected 1 item test_example.py::test_count FAILED [100%] FAILURES _____________________________________________________________________ test_count ______________________________________________________________________def test_count():assert count_num([1, 2, 3]) ! 3 E assert 3 ! 3 E where 3 count_num([1, 2, 3])test_example.py:11: AssertionErrorshort test summary info FAILED test_example.py::test_count - assert 3 ! 31 failed in 0.16s 备注 .代表测试通过F代表测试失败-v显示详细的测试信息 -h显示pytest命令详细的帮助信息 标记 默认情况下pytest会在当前目录下寻找以test_为开头以_test结尾的测试文件并且执行文件内所有以test_为开头以_test为结尾的所有函数和方法 指定运行测试用例可以通过::显示标记文件名::类名::方法名文件名::函数名 pytest test_example3.py::test_odd指定一些测试用例测试运行可以使用-k模糊匹配 pytest -k example通过pytest.mark.skip()或者pytest.makr.skipif()条件表达式跳过指定的测试用例 import pytesttest_flag Falsepytest.mark.skip() def test_odd():num random.randint(0, 100)assert num % 2 1pytest.mark.skipif(test_flag is False, reasontest_flag is False) def test_even():num random.randint(0, 1000)assert num % 2 0通过pytest.raises()捕获测试用例可能抛出的异常 def test_zero():num 0with pytest.raises(ZeroDivisionError) as e:num 1/0exc_msg e.value.args[0]print(exc_msg)assert num 0预先知道测试用例会失败但是不想跳过需要显示提示信息使用pytest.mark.xfail() pytest.mark.xfail() def test_sum():random_list [random.randint(0, 100) for x in range(10)]num sum(random_list)assert num 20对测试用例进行多组数据测试每组参数都能够独立执行一次可以避免测试用例内部执行单组数据测试不通过后停止测试 pytest.mark.parametrize(num,num2, [(1,2),(3,4)]) def test_many_odd(num: int, num2: int):assert num % 2 1assert num2 % 2 0固件Fixture) 固件就是一些预处理的函数pytest会在执行测试函数前或者执行后加载运行这些固件常见的应用场景就有数据库的连接和关闭设备连接和关闭 简单使用 import pytestpytest.fixture() def postcode():return hellodef test_count(postcode):assert postcode hello按照官方的解释就是当运行测试函数会首先检测运行函数的参数搜索与参数同名的fixture一旦pytest找到就会运行这些固件获取这些固件的返回值如果有并将这些返回值作为参数传递给测试函数 预处理和后处理 接下来进一步验证关于官方的说法 import pytestpytest.fixture() def connect_db():print(Connect Database in .......)yieldprint(Close Database out .......)def read_database(key: str):p_info {name: zhangsan,address: China Guangzhou,age: 99}return p_info[key]def test_count(connect_db):assert read_database(name) zhangsan执行测试函数结果 test session starts platform win32 -- Python 3.6.8, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 -- D:\Coding\Python3.6\python.exe cachedir: .pytest_cache rootdir: C:\Users\libuliduobuqiuqiu\Desktop\GitProjects\PythonDemo\pytest plugins: Faker-8.11.0 collecting ... collected 1 itemtest_example.py::test_count Connect Database in ....... PASSED [100%]Close Database out ....... 1 passed in 0.07s 备注 首先从结果上看验证了官方的解释pytest执行测试函数前会寻找同名的固件加载运行connect_db固件中有yield这里pytest默认会判断yield关键词之前的代码属于预处理会在测试前执行yield之后的代码则是属于后处理将在测试后执行 作用域 从前面大致了解了固件的作用抽离出一些重复的工作方便复用同时pytest框架中为了更加精细化控制固件会使用作用域来进行指定固件的使用范围比如在这一模块中的测试函数执行一次即可不需要模块中的函数重复执行更加具体的例子就是数据库的连接这一连接的操作可能是耗时的我只需要在这一模块的测试函数运行一次即可不需要每次都运行。 而定义固件是一般通过scop参数来声明作用常用的有 function: 函数级每个测试函数都会执行一次固件 class: 类级别每个测试类执行一次所有方法都可以使用 module: 模块级每个模块执行一次模块内函数和方法都可使用 session: 会话级一次测试只执行一次所有被找到的函数和方法都可用。 import pytestpytest.fixture(scopefunction) def func_scope():print(func_scope)pytest.fixture(scopemodule) def mod_scope():print(mod_scope)pytest.fixture(scopesession) def sess_scope():print(session_scope)def test_scope(sess_scope, mod_scope, func_scope):passdef test_scope2(sess_scope, mod_scope, func_scope):pass执行结果 test session starts platform win32 -- Python 3.6.8, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 -- D:\Coding\Python3.6\python.exe cachedir: .pytest_cache rootdir: C:\Users\libuliduobuqiuqiu\Desktop\GitProjects\PythonDemo\pytest plugins: Faker-8.11.0 collecting ... collected 2 itemstest_example2.py::test_scope session_scope mod_scope func_scope PASSED [ 50%] test_example2.py::test_scope2 func_scope PASSED [100%] 2 passed in 0.07s 从这里可以看出modulesession作用域的固件只执行了一次可以验证官方的使用介绍 自动执行 有人可能会说这样子怎么那么麻烦unittest框架中直接定义setUp就能自动执行预处理同样的pytest框架也有类似的自动执行 pytest框架中固件一般通过参数autouse控制自动运行。 import pytestpytest.fixture(scopesession, autouseTrue) def connect_db():print(Connect Database in .......)yieldprint(Close Database out .......)def test1():print(test1)def test2():print(test)执行结果 test session starts platform win32 -- Python 3.6.8, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 -- D:\Coding\Python3.6\python.exe cachedir: .pytest_cache rootdir: C:\Users\libuliduobuqiuqiu\Desktop\GitProjects\PythonDemo\pytest plugins: Faker-8.11.0 collecting ... collected 2 itemstest_example.py::test1 Connect Database in ....... PASSED [ 50%]test1test_example.py::test2 PASSED [100%]test Close Database out ....... 2 passed in 0.07s 从结果看到测试函数运行前后自动执行了connect_db固件 参数化 前面简单的提到过了pytest.mark.parametrize通过参数化测试而关于固件传入参数时则需要通过pytest框架中内置的固件request并且通过request.param获取参数 import pytestpytest.fixture(params[(redis, 6379),(elasticsearch, 9200) ]) def param(request):return request.parampytest.fixture(autouseTrue) def db(param):print(\nSucceed to connect %s:%s % param)yieldprint(\nSucceed to close %s:%s % param)def test_api():assert 1 1执行结果 test session starts platform win32 -- Python 3.6.8, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 -- D:\Coding\Python3.6\python.exe cachedir: .pytest_cache rootdir: C:\Users\libuliduobuqiuqiu\Desktop\GitProjects\PythonDemo\pytest plugins: Faker-8.11.0 collecting ... collected 2 itemstest_example.py::test_api[param0] Succeed to connect redis:6379 PASSED [ 50%] Succeed to close redis:6379test_example.py::test_api[param1] Succeed to connect elasticsearch:9200 PASSED [100%] Succeed to close elasticsearch:9200 2 passed in 0.07s 这里模拟连接redis和elasticsearch加载固件自动执行连接然后执行测试函数再断开连接。 总结 对于开发来说为什么也要学习自动化测试这一块很重要的一点就是通过自动化测试节省一些重复工作的时间同时对于优化代码结构提高代码覆盖率以及后续项目重构都是有着很重要的意义同时理解pytest和unittest在基础上有何区别有助于不同的业务场景中选择适合自己的测试工具。 这篇文章只是简单的介绍了pytest的基本使用有兴趣的可以去看看官方文档官方文档中还提到了如内置固件的使用常用测试的场景等等。 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 软件测试面试小程序 被百万人刷爆的软件测试题库谁用谁知道全网最全面试刷题小程序手机就可以刷题地铁上公交上卷起来 涵盖以下这些面试题板块 1、软件测试基础理论 2、web,app接口功能测试 3、网络 4、数据库 5、linux 6、web,app接口自动化 7、性能测试 8、编程基础9、hr面试题 10、开放性测试题11、安全测试12、计算机基础 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你
http://www.dnsts.com.cn/news/250915.html

相关文章:

  • 电子商务网站需要做那些准备工作最新新闻热点事件摘抄2022年5月
  • vs2013 手机网站开发设计师装修网
  • 可以做长页海报的网站网站文案技巧
  • 昆明著名网站建设做外贸网站要花多少钱
  • 成都零起飞网站建设安贞街道网站建设
  • 怎么在网站上做游戏代练2015手机版网站制作
  • 超市网站源码自己有云主机 怎么网站备案
  • 加急网站备案阿里巴巴外贸圈app
  • 网站开发资金预算seo优化软件购买
  • 友汇网网站建设管理后台wordpress crux
  • 网站建设介绍ppt模板网站后台怎么上传表格
  • 网站充值页面模板苏州做网站公司哪家比较好
  • 汉中今天确诊名单seo关键词优化价格
  • 茂名住房和城乡建设局网站国外黄冈网站推广软件
  • 网络维护网站自定义文章类型的分类wordpress
  • 深圳网站优化搜索好的网站你知道
  • 贵阳市城乡建设学校网站北京壹同制作
  • 虚拟主机建设网站绑定域名怎么在百度上建立网站
  • 域名备案通过后怎么做网站交流网站模版
  • 郑州网站建设扌汉狮网络杭州江干区抖音seo品牌
  • 做底单的网站企业网站建设公司 末路
  • mvc做网站用的多不多拼团小程序制作平台
  • 建设一个和聚享游差不多的网站照片编辑在线
  • 网站建设怎么弄营销型网站建设公司是干嘛的
  • 阿里巴巴跟建设网站的区别公司网站制作公司
  • 自己随便玩玩的网站怎么建设京东网站设计风格
  • 南宁网站seo公司哪家好运城手机网站制作
  • 华为云服务器怎么建设网站网站建设钅金手指排名十五
  • php做网站基本流程外贸网站建设szjijie
  • 网站的建设方面如何写网页设计代码步骤