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

福州网站快速排名平台设计图

福州网站快速排名,平台设计图,黑客攻击的网站,it外包wordpress模板在文章Python之单元测试使用的一点心得中#xff0c;笔者介绍了自己在使用Python测试工具coverge的一点心得#xff0c;包括#xff1a; 使用coverage模块计算代码测试覆盖率使用coverage api计算代码测试覆盖率coverage配置文件的使用coverage badge的生成 本文在此基础上…  在文章Python之单元测试使用的一点心得中笔者介绍了自己在使用Python测试工具coverge的一点心得包括 使用coverage模块计算代码测试覆盖率使用coverage api计算代码测试覆盖率coverage配置文件的使用coverage badge的生成 本文在此基础上将会介绍coverage的高阶使用包括 Flask API测试coverage多文件测试coverage的Gitlab CI/CD集成coverage badge生成 本文中使用coverage的版本均为7.3.0。 Flask API测试 在unittest测试框架如果对Flask API进行测试时使用HTTP请求那么将无法得到代码覆盖率。   我们有如下的示例Flask服务 # -*- coding: utf-8 -*- from flask import Flaskapp Flask(__name__)app.route(/) def index():return Hello indexapp.route(/test) def test():return Hello testif __name__ __main__:app.run(host0.0.0.0, port5000, debugTrue)正确的测试代码如下 # -*- coding: utf-8 -*- import unittestfrom flask_app import appclass AppTestCase(unittest.TestCase):def setUp(self):self.ctx app.app_context()self.ctx.push()self.client app.test_client()def tearDown(self):self.ctx.pop()def test_case1(self):response self.client.get(/)self.assertEqual(response.status_code, 200)self.assertEqual(response.text, Hello index)def test_case2(self):response self.client.get(/test)self.assertEqual(response.status_code, 200)self.assertEqual(response.text, Hello test)if __name__ __main__:suite unittest.TestSuite()suite.addTest(AppTestCase(test_case1))suite.addTest(AppTestCase(test_case2))run unittest.TextTestRunner()run.run(suite)coverage多文件测试 我们有如下的实现两个变量相加的代码func_add.py # -*- coding: utf-8 -*- def add(a, b):if isinstance(a, str) and isinstance(b, str):return a belif isinstance(a, list) and isinstance(b, list):return a belif isinstance(a, (int, float)) and isinstance(b, (int, float)):return a belse:return None两个测试文件test_func_add1.py和test_func_add2.py内容如下 # -*- coding: utf-8 -*- import unittestfrom func_add import addclass TestAdd(unittest.TestCase):def setUp(self):passdef test_add_case1(self):a Hellob Worldres add(a, b)print(res)self.assertEqual(res, HelloWorld)def test_add_case2(self):a 1b 2res add(a, b)print(res)self.assertEqual(res, 3)if __name__ __main__:# 部分用例测试# 构造一个容器用来存放我们的测试用例suite unittest.TestSuite()# 添加类中的测试用例suite.addTest(TestAdd(test_add_case1))suite.addTest(TestAdd(test_add_case2))run unittest.TextTestRunner()run.run(suite)# -*- coding: utf-8 -*- import unittestfrom func_add import addclass TestAdd(unittest.TestCase):def setUp(self):passdef test_add_case3(self):a [1, 2]b [3]res add(a, b)print(res)self.assertEqual(res, [1, 2, 3])def test_add_case4(self):a 2b 3res add(a, b)print(None)self.assertEqual(res, None)if __name__ __main__:# 部分用例测试# 构造一个容器用来存放我们的测试用例suite unittest.TestSuite()# 添加类中的测试用例suite.addTest(TestAdd(test_add_case3))suite.addTest(TestAdd(test_add_case4))run unittest.TextTestRunner()run.run(suite)使用命令进行测试 coverage run test_func_add1.py coverage run test_func_add2.py coverage report生成的代码测试覆盖率如下 Name Stmts Miss Cover --------------------------------- func_add.py 8 2 75% --------------------------------- TOTAL 8 2 75%这是不符合我们预期的因为在这两个测试文件中我们对所有的代码都进行了测试理论上测试覆盖率应该为100%之所以这样是因为coverage run命令运行时每一次都会覆盖掉之前的测试。正确的测试命令以文件追加的形式如下 coverage run test_func_add1.py coverage run --append test_func_add2.py coverage report此时代码覆盖率如下 Name Stmts Miss Cover --------------------------------- func_add.py 8 0 100% --------------------------------- TOTAL 8 0 100%coverage的Gitlab CI/CD集成 在文章Gitlab CI/CD入门一Python项目的CI演示中笔者介绍了Gitlab CI/CD的入门。在此基础上我们将集成coverage。   首先我们的test目录如下 . ├── __init__.py ├── func_add.py └── test_func_add.pyfunc_add.py为实现两个变量相加的代码如前述。test_func_add.py为测试代码如下 # -*- coding: utf-8 -*- import unittestfrom func_add import addclass TestAdd(unittest.TestCase):def setUp(self):passdef test_add_case1(self):a Hellob Worldres add(a, b)print(res)self.assertEqual(res, HelloWorld)def test_add_case2(self):a 1b 2res add(a, b)print(res)self.assertEqual(res, 3)def test_add_case3(self):a [1, 2]b [3]res add(a, b)print(res)self.assertEqual(res, [1, 2, 3])def test_add_case4(self):a 2b 3res add(a, b)print(None)self.assertEqual(res, None)if __name__ __main__:# 部分用例测试# 构造一个容器用来存放我们的测试用例suite unittest.TestSuite()# 添加类中的测试用例suite.addTest(TestAdd(test_add_case1))suite.addTest(TestAdd(test_add_case2))suite.addTest(TestAdd(test_add_case3))suite.addTest(TestAdd(test_add_case4))run unittest.TextTestRunner()run.run(suite)CI/CD依赖.gitlab-ci.yml配置如下 stages:- build- unittestbuild-job:stage: buildscript:- echo date- echo Hello, $GITLAB_USER_LOGIN!- echo This job deploys something from the $CI_COMMIT_BRANCH branch.unit_test_job:stage: unittestimage: python:3.9-alpine3.17script:- pip3 install coverage7.3.0- coverage run test/test_func_add.py- coverage reportcoverage: /TOTAL.*\s(\d%)$/运行CI/CD结果如下图   在Gitlab项目中的Settings - CI/CD - General pipelines中点击Expand会显示CI/CD已内置Pipeline status, Coverage report, Latest release其中Coverage repor如下图   最后我们要在项目中加入coverage badge徽章在Gitlab项目中的Settings - General - Badge中点击Expand再点击Add badgecoverage徽章的配置如下 本项目中只有main分支因此不需要设置变量实际在使用过程中需要配置变量如default_branch等。   以上配置完毕后项目徽章显示如下 以上配置过程已开源项目网址为https://gitlab.com/jclian91/gitlab_ci_test 。 coverage badge生成 coverage badge生成方式分为静态和动态。   动态的话可使用coverage-badge或者genbadge模块。   静态的话可使用网站https://shields.io/badges/static-badge .   比如我们生成编程语言的徽章如下图 之后我们就可以用该网址访问徽章了。 总结 本文介绍了测试工具coverage的高阶使用希望能对读者有所启发~
http://www.yingshimen.cn/news/82288/

相关文章:

  • 怎么在自己的电脑做网站织梦手机网站怎么修改密码
  • 漯河公司做网站成都设计公司第一名
  • 在深圳怎么进大公司网站如何自己做小程序免费
  • 乐清网站优化推广wordpress 服务器配置
  • 江苏中小企业网站建设合肥网站建设程序
  • 临海如何制作公司网站框架wordpress微信登录插件下载失败
  • 定制网站建设服务公司非凡免费建网站平台
  • 深圳网站制作哪家便宜dx网站是哪家公司做的
  • 山东省住房城乡建设厅网站首页公司网站关键词优化
  • 哪些行业对做网站的需求大佛山市建设官方网站
  • 2014网站建设最近军事新闻热点大事件2022
  • 网站备案照相电商网站设计目的
  • 网站怎么做右上角消息提醒如何建立一个微信小程序
  • 制作的网站图片不显示一个购物网站开发的可行性
  • c 网站开发培训大宗商品交易平台推荐
  • 备案 手机网站楼网络规划设计方案
  • 怎么做网站差不多站长腾讯学生机wordpress
  • php 网站模板秦皇岛在什么地方
  • 东莞建设网官方网站首页有经验的武进网站建设
  • 无锡专业制作网站网页设计制作论文
  • 网站建设和前端开发的区别wordpress主题汉化是什么意思
  • 上海专业网站建站公做球衣外贸用什么网站
  • 163网站是jsp做的吗wordpress在php下安装教程
  • 深圳网站建设968织梦和wordpress哪个seo好
  • 网站开发待遇怎么样网站制作实例
  • 做的比较好的几个宠物网站珠海市做网站
  • 公司网站开发费摊销wordpress 添加微博
  • 哪里可以做外贸网站开通网站必须做域名空间
  • 网站开发的排期网站建设中山
  • 企业内部门户网站建设惠州做百度网站多少