首页 > 其他分享 >通过unittest加载测试用例的不同方法

通过unittest加载测试用例的不同方法

时间:2023-10-12 10:24:58浏览次数:34  
标签:__ suite2 suite1 unittest 测试用例 suite 加载

使用python+unitest做自动化测试执行时, 执行用例时就涉及测试用例的加载。

即如何把测试cases加载到测试suite,然后进行运行。

一般把用例加载方法分为两大类:通过unittest.main(),或者通过testsuit。

第一种方式使用比较简单,第二种比较灵活多样。

 

一、测试文件中有测试类,及main方法。

测试代码如下:

import unittest
class MyTestCase(unittest.TestCase):
# setUp、tearDown此处省略
# 测试用例1
def test_001(self):
#具体的测试脚本
......
# 测试用例2
def test_002(self):
#具体的测试脚本
......
if __name__ == "__main__":
unittest.main()


 这种方法更适合命令行执行。

二、测试文件和执行文件不在同一个文件中

1. 通过testsuite从指定类添加指定用例:

if __name__ == '__main__':
# 创建测试套suite对象
suite = unittest.TestSuite()
# 往suite中添加用例
suite.addTest(MyTestCase1("test_login_success")) # 添加参数:类名(方法名称)
suite.addTest(MyTestCase1("test__login_fail"))
# 创建runner对象
runner = unittest.TextTestRunner(verbosity=2)
# 调用runner的run方法执行suite中的用例
runner.run(suite)

 

2. 通过loader从指定类中加载测试用例到suite

 

if __name__ == "__main__":
# 从指定类加载测试方法到suite
suite1 = unittest.TestLoader().loadTestsFromTestCase(MyTestCase1) # 参数:类名
suite2 = unittest.TestLoader().loadTestsFromTestCase(MyTestCase2)
# 创建新suite,参数为前边的suite1和suite2
suite = unittest.TestSuite([suite1, suite2]) # suite嵌套
# 执行suite中的用例
unittest.TextTestRunner(verbosity=2).run(suite)

3. 通过loader从指定文件中加载测试用例到suite

 
if __name__ == "__main__":
# 从指定类加载测试方法到suite
suite1 = unittest.TestLoader().loadTestsFromModule(cases.ec_login) # 参数:模块名称
suite2 = unittest.TestLoader().loadTestsFromModule(cases.ec_register)
# 创建新suite,参数为前边的suite1和suite2
suite = unittest.TestSuite([suite1, suite2]) # suite嵌套
# 执行suite中的用例
unittest.TextTestRunner(verbosity=2).run(suite)

4. 通过loader从指定字符串加载测试用例到suite

if __name__ == "__main__":
# 从指定类加载测试方法到suite
suite1 = unittest.TestLoader().loadTestsFromName("MyTestCase1",cases.ec_login)
suite2 = unittest.TestLoader().loadTestsFromName(
"MyTestCase1.test_login_fail",cases.ec_login) # 参数:类名/方法名,模块名
# 创建新suite,参数为前边的suite1和suite2
suite = unittest.TestSuite([suite1, suite2]) # suite嵌套
# 执行suite中的用例
unittest.TextTestRunner(verbosity=2).run(suite)

5. 通过loader从指定目录加载测试用例到suite

if __name__ == "__main__":
# 从指定类加载测试方法到suite
suite1 = unittest.TestLoader().discover("case1", "ec*.py") # 参数:目录,匹配模式
suite2 = unittest.TestLoader().discover("case2", "test*.py")
# 创建新suite,参数为前边的suite1和suite2
suite = unittest.TestSuite([suite1, suite2]) # suite嵌套
# 执行suite中的用例
unittest.TextTestRunner(verbosity=2).run(suite)

总结:

以上加载用例的方式很多,可以灵活根据需要选取。若是批量执行,使用discover方法比较方便。

若要生成美观点的结果报告,可以结合htmlreport使用:

# 创建loader对象
loader = unittest.defaultTestLoader
# 加载方法到suite中
suite1 = loader.discover("case1", "ecshop*.py")
suite2 = loader.discover("case2", "selenium*.py")
# 创建suite对象
suite = unittest.TestSuite()
# 添加suite到suite
suite.addTests(suite1)
suite.addTests(suite2)
# 创建runner对象
HTMLReport.TestRunner().run(suite) # 生成html格式报告

 

 

     
 
这种方法更适合命令行执行。

标签:__,suite2,suite1,unittest,测试用例,suite,加载
From: https://www.cnblogs.com/lzqhuazi/p/17758854.html

相关文章

  • vue项目打包,解决静态资源无法加载和路由加载无效(404)问题
    打包后的项目静态资源无法使用,导致页面空白静态资源无法使用,那就说明项目打包后,图片和其他静态资源文件相对路径不对,此时找到config里面的index.js,在build模块下加入assetsPublicPath:'./', 如下图所示,    在History模式下配合使用nginx运行打包后的项目当刷新当前路......
  • 软件测试技术之地图导航的测试用例
    外观测试屏幕显示不能有花屏、黑点和闪屏,清晰度、亮度、颜色要正常。检测所有按键都能起到相应作用,是否手感不良。UI显示状态、颜色、清晰度、效果。控制:放大,缩小,音量调节功能测试。交叉路口查询测试,点击交叉路口查询后能正确输入城市名称吗。关键字查询:点击关......
  • Python 动态加载模块
    Python动态加载模块-lwp-boy-博客园(cnblogs.com)python动态导入模块import_module和重载reload-掘金(juejin.cn)关于Python的动态导入(import)-知乎(zhihu.com)1,啥叫动态加载:动态加载指在程序运行中,动态的加载模块,而不是在运行之前利用import或from...imp......
  • web启动加载资源
    1.struts1plugin创建类实现接口org.apache.struts.action.PlugIn;创建一个空构造函数实现接口方法配置struts-config.xml添加<plug-in/>元素例:publicclassWileyPluginimplementsPlugIn{publicstaticfinalStringPROPERTIES=......
  • python读取excel测试用例数据
     #excel_readUtil.pyfromopenpyxlimportload_workbookimportpandasclassHandleExcel:"""封装excel文件处理类"""def__init__(self,filename,sheetname=None):"""定义构造方法:p......
  • Unittest测试框架基础及进阶
    需求假设领导让你开发一个接口测试框架。领导提出了一些新的需求,你如何实现?支持用例优先级、标签,支持通过优先级或标签筛选用例支持用例负责人、迭代,及通过负责人或迭代筛选用例支持多环境配置支持超时及重试机制,防止不稳定用例并发执行用例以提高用例回归效率Unitt......
  • 【原创】实现自动编写软件功能测试用例
    国内积极推进“去测试化”的大环境下,想走完一套从需求评审-用例编写-提测的完整流程,越来越难但软件测试入行越久,就越会发现“用例驱动测试”才是正确的事但编写测试用例本身是一件耗时,又不被允许耗时的重要事示例: 用例放大: 留言多的话,我再细说 ......
  • 一个页面从输入URL到页面加载显示完成的过程
    当用户在浏览器中输入URL并按下回车时,浏览器会向服务器发送HTTP请求,请求指定的资源。服务器收到请求后,会根据请求的URL返回对应的资源,这通常是一个HTML文件。浏览器收到服务器返回的HTML文件后,会开始解析HTML代码,并在浏览器中构建DOM(DocumentObjcetModal)树。在解析过程中,浏......
  • 使用RequireJS并实现一个自己的模块加载器 (一)
    使用RequireJS并实现一个自己的模块加载器(一) RequireJS&SeaJS在 模块化开发 开发以前,都是直接在页面上引入 script 标签来引用脚本的,当项目变得比较复杂,就会带来很多问题。JS项目中的依赖只有通过引入JS的顺序来确定,项目会变得复杂难以维护。复杂的脚本会暴露很......
  • 如何用tfds加载本地数据库
    云端的数据库存储在google的服务器,所以无法通过tfds.load('mnist',split='train')这样的方式直接加载,下面是一些变通的方式来读取。一、MNIST数据库1.我用tfds.load去加载本地的mnist数据库,mnist/3.0.1应该具有什么样的数据格式答:如果你正在使用`tfds.load`来加载本地的MNIST......