使用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格式报告
 
 
 
 
这种方法更适合命令行执行。

通过unittest加载测试用例的不同方法的更多相关文章

  1. unittest加载测试用例名称必须以test开头,是否可以定制化

    ​ 前几天,在一个群里,一个人问了,这样一个问题.说他面试遇到一个面试官,问他,为啥unittest的测试用例要用test 开头,能不能定制化.他不知道为啥. 看到这个题目,我回答当然可以了,可以用l ...

  2. Python 中 unittest 框架加载测试用例的常用方法

    unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...

  3. Unittest加载执行用例的方法总结

    前言 说到测试框架,unittest是我最先接触的自动化测试框架之一了, 而且也是用的时间最长的, unittest框架有很多方法加载用例,让我们针对不同的项目,不同项目的大小及用例的多少自己选择加载 ...

  4. unittest加载用例

    diascover加载测试用例 1.discover方法里面有三个参数: -case_dir:这个是待执行用例的目录. -pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开 ...

  5. LoaderTest加载测试用例的方法总结

    加载用例,可以用suite.addTest(测试类名("测试函数名"))实现,也可用过suit.addTest(loader.Loader....)实现,一下针对Loader的三个 ...

  6. 关于unittest单元测试框架中常用的几种用例加载方法

    unittest模块是Python自带的一个单元测试模块,我们可以用来做单元测试.unittest模块包含了如下几个子模块: 测试用例:TestCase 测试集:TestSuite 加载用例:Test ...

  7. appium+python+unittest 测试用例的几种加载执行方式

    利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块:  一种是添加到testsuite集合中再加载所有的被测试对象,而testsu ...

  8. unittest(2)-加载用例的3种方式-输出测试报告

    # 导入测试类执行测试用例 import unittest from day_20191202.class_unittest import TestMathMethod, TestMulti # fr ...

  9. junit测试用例加载spring配置文件

    junit加载pom引用项目的xml配置文件,如果定义了<beans profile="dev">,必须在测试用例类上面加上标记 @ActiveProfiles(&qu ...

  10. unittest---unittest多种加载用例方法

    在做自动化测试我们对执行用例很有要求,因为每条用例可能就和上一条数据有关系,那么我想要批量执行一些用例呢?这个怎么去操作呢?unittest自带的功能可以帮助到我们,我们可以通过不同的场景运用不同的执 ...

随机推荐

  1. 根据模板动态生成word(二)使用poi生成word

    @ 目录 一.准备模板 1.创建模板文件 二.代码实践 1.引入依赖 2.自定义XWPFDocument 2.公用的方法和变量 3.工具类引用的包名 4.段落文本替换 5.图片替换 6.表格替换 7. ...

  2. 1.8 运用C编写ShellCode代码

    在笔者前几篇文章中,我们使用汇编语言并通过自定位的方法实现了一个简单的MessageBox弹窗功能,但由于汇编语言过于繁琐在编写效率上不仅要考验开发者的底层功底,还需要写出更多的指令集,这对于普通人来 ...

  3. 即构SDK支持对焦、变焦、曝光调整,让直播细节清晰呈现

    对焦.变焦.曝光调整,摄影爱好者对这三个术语一定不陌生. 对焦是指通过相机对焦机构变动物距和相距的位置,使被拍物成像清晰的过程:变焦指的是在望远拍摄时放大远方物体,并使之清晰成像 :曝光调整是一种曝光 ...

  4. 利用java来实现计算器的加减乘除

    package bag; import java.util.Scanner; public class Demo06 { public static void main(String[] args) ...

  5. DataArts Studio实践丨通过Rest Client 接口读取RESTful接口数据的能力

    本文分享自华为云社区<DataArts Studio 通过Rest Client 接口读取RESTful接口数据的能力,通过Hive-SQL存储>,作者: 张浩奇 . Rest Clien ...

  6. C++之函数的分文件编写

    从黑马程序员的c++课里学到的函数的分文件编写 函数的分文件编写 作用:让代码结构更加清晰 函数分文件编写一般有4个步骤 1,创建后缀名为.h的头文件 2,创建后缀名为.cpp的源文件 3,在头文件中 ...

  7. Mysql高级1-存储引擎

    一.Mysql体系结构 1.1.连接层 最上层是一个客户端和链接服务,主要完成一些类似于链接处理,授权认证,及相关的安全方案,服务器也会为安全接入的而每个客户端验证它所具有的操作权限 1.2.服务层 ...

  8. asp.net core之Host

    Host简介 在ASP.NET Core中,Host是一个托管应用程序的宿主环境.它提供了一种统一的方式来启动和运行应用程序,无论是在开发环境中还是在生产环境中.Host负责处理应用程序的生命周期.配 ...

  9. Angular: Error: NG0100: ExpressionChangedAfterItHasBeenChecked

    错误原因 当变更检测完成后又更改了表达式的值时,Angular就会抛出ExpressionChangedAfterItHasBeenCheckedError 错误,Angular只会在开发模式下抛出此 ...

  10. Angular与AngularJS区别

    简单介绍 目前 Angular 2 到現在 Angular 11 都是十分穩定的改版,不再出現之前 Angular 1.x 到 Angular 2.x 的哀鴻遍野. 因此目前市面上確實同時存在著兩種差 ...