转载请表明出处:https://www.cnblogs.com/shapeL/p/9179484.html

简单介绍框架的实现逻辑,参考代码的git地址:

https://github.com/zhangying123456/python_unittest_interface

1.环境准备

python3 + pycharm编辑器

2.框架目录展示

(该套代码只是简单入门,有兴趣的可以不断后期完善)

(1)run.py主运行文件,运行之后可以生成相应的测试报告,并以邮件形式发送;

(2)report文件夹存放测试结果报告;

(3)unit_test文件夹是存放测试用例(demo.py和test_unittest.py用例用法介绍,实际项目中可以按照不同模块新建python package,来存放不同模块的接口用例);

(4)util对测试接口相关方法的封装:HTMLTestRunner.py生成测试报告的封装;send_mail.py发送邮件的封装;test_get_post.py接口请求类型的封装。

3.代码实现说明

(1)get、post接口请求实例介绍

【1】requests.get()、requests.post()用法可以参考文档:https://www.cnblogs.com/shapeL/p/9037035.html

【2】请求之后对返回结果进行断言:assertEqual()等,断言方法很多,可上网查询

(2)实际中,有些参数或方法在执行用例之前必须说明,这就涉及到setUp、tearDown、setUpClass、tearDownClass的用法

【1】setup():每个测试函数运行前运行;teardown():每个测试函数运行完后执行;setUpClass():必须使用@classmethod 装饰器,所有test运行前运行一次;tearDownClass():必须使用@classmethod装饰器,所有test运行完后运行一次

【2】也可以对某些用例执行过程中跳过:unittest.skip(),具体使用方法可上网查询

(3)如果每次接口请求时都使用requests/get、post请求实在是繁琐,我们可以对该方法进行封装,接口请求时直接调用即可

(4)测试用例编写完之后,主函数run.py直接使用unittest模块将所有用例一并执行

【1】unittest模块:TestSuite 多个测试用例集合在一起;TestRunner 是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息(unittest.TextTestRunner().run(suite))

【2】suite.addTests()和suite.addTest()均可实现

# 2种用法:第一种suite.addTest()
suite.addTest(Case('test_case01'))
suite.addTest(Case('test_case02'))
suite.addTest(Test('test_01'))
suite.addTest(Test('test_02')) #2种用法:第二种suite.addTests()
suite.addTests(map(Test, ["test_01", "test_02"]))
suite.addTests(map(Case, ["test_case01", "test_case02"]))

【3】TestRunner测试结果输出到控制台,要将测试结果输出到report中,使用HTMLTestRunner.py文件(该文件参考地址:https://github.com/huilansame/HTMLTestRunner_PY3

(5)测试完成之后,想要将测试结果发送邮件给相关人员

发送邮件具体实现方法,参考文档:https://www.cnblogs.com/shapeL/p/9115887.html

说明:

1.代码中涉及到的测试数据都屏蔽掉了,可以直接使用自己负责项目的真实数据进行了解;

2.该套测试脚本相对基础,需要完善的地方还要很多,欢迎各位学习交流;

3.后续会再写一篇博客接口自动化测试(二),实现Excel来管理用例等。

最新文章

  1. beautifulSoup(1)
  2. 纯CSS实现图片水平垂直居中于DIV(图片未知宽高)
  3. 11月15日下午 ajax返回数据类型为XML数据的处理
  4. IE9以下 placeholder兼容
  5. java中map<string,int>
  6. 01C语言基础知识
  7. Hadoop SequenceFile数据结构介绍及读写
  8. No.5__C#
  9. iOS——Command-Line 查看当前SDK版本并修改默认SDK版本
  10. TYVJ P1073 加分二叉树 Label:区间dp
  11. 【上手centos】二、C/C++的编译与运行
  12. 车牌识别LPR(一)-- 研究背景
  13. VmWare下安装Linux Centos6.0详细过程
  14. bzoj2287:[POJ Challenge]消失之物
  15. Mysql group_concat
  16. html mysql special character
  17. 后台调用外部程序的完美实现(使用CreateDesktop建立隐藏桌面)
  18. div+css命名规范大全
  19. 如何优雅的使用 Python 实现文件递归遍历
  20. 使用FLASK+winscp在服务器端发布一个表白网页

热门文章

  1. 基于Docker的GoldenGate部署
  2. chrome内核浏览器插件的使用--Tampermonkey(油猴插件)
  3. Learning-Python【7】:Python数据类型(3)—— 字典、集合
  4. docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
  5. C# 关闭子窗体释放子窗体对象问题
  6. 服务列表中找不到mysql
  7. 七天学会ASP.NET MVC ——深入理解ASP.NET MVC
  8. linux中执行shell命令的几种常用方法
  9. EF连接Sqlserver2014,使用DBGeography时提示无法加载sqlserverspatial.dll
  10. mybatis_generator合并xml mapper文件