前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【PyUnit】一、如何让测试用例按序执行

【PyUnit】一、如何让测试用例按序执行

作者头像
用户5521279
发布2019-09-16 16:25:21
1.1K0
发布2019-09-16 16:25:21
举报
文章被收录于专栏:搜狗测试搜狗测试

PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试。PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用于进行白盒测试和回归测试。

PyUnit 具有如下好处:

  • 可以使测试代码与产品代码分离。
  • 针对某一个类的测试代码只需要进行较少的改动,便可以应用于另一个类的测试。
  • PyUnit 开放源代码,可以进行二次开发,方便对 PyUnit 的扩展。

PyUnit具有如下特征:

  • 使用断言方法判断期望值和实际值的差异,返回 bool 值。
  • 测试驱动设备可使用共同的初始化变量或实例。
  • 测试包结构便于组织和集成运行。

对于unittest框架的使用,建议参考详细的官方文档,本文主要分享在使用unittest过程中,测试用例执行顺序问题及扩展问题。

本期以三种unittest自带的方法为例,下期详述扩展示例。

unittest中的执行顺序

测试用例编写之后运行,发现执行顺序并不是按照我们编写的顺序/位置来执行,许多前后有关联的测试用例在这种情况下就没有办法保证其执行的顺序性,因此使得有前后关联的测试用例执行失败。例:下图打开微信/支付宝和关闭微信/支付宝是相关联的case,因为没有按照顺序执行,导致两个关闭的case失败。

在unittest中,loader.py的loadTestsFromTestCase方法里边,调用了getTestCaseNames方法来获取测试用例的名称,使用functools.cmp_to_key的方法对测试用例进行排序,如下图:

该方法默认是根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。

基于unittest的机制,如何控制用例执行顺序呢?

查阅相关资料主要有如下几种方法。

通过TestSuite添加

通过TestSuite类的addTest方法,按顺序加载测试用例,如下图:

手动修改函数名称

在命名时,对函数名称进行编号,test后紧跟数字编号,根据ASCII码排序保证顺序执行,示例如下图:

通过TestLoader添加

通过TestSuite类的addTest方法,按顺序加载测试用例,如下图:

该方法可以同时测试多个类,并且同TestSuite方法相类似,该方法的执行需要对层级进行编号,以按照特定顺序执行。

从如上三种方法可以看出,人工排序不可避免,代码繁琐、不好维护,那如何在不修改每条case,不手动添加代码的情况下,让测试用例按照编写的顺序依次执行呢?关注公众号,下期将分享通过excel和其他扩展方法,实现测试用例顺序执行方法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档