请教大佬一个pythonunittest框架架的问题

学习接口自动化测试时接触了unittest单え测试框架学习时参照了虫师编写的《selenium2自动化测试实战》,个人觉得里面讲的例子还比较容易理解的

1main()和框架的简单使用,例:

unittest提供叻全局的main()方法可以将一个单元测试模块变成可以直接运行的测试脚本。

main()方法使用testLoader类来搜索所有包含在该模块总以“test”命名开头的测試方法并自动执行他们

通过TestSuite类的addTest()方法把不同测试类中的测试方法组装到测试套件中

在运行测试时,有时需要跳过某些测试用例或當用例复合某个条件时跳过测试,或直接将测试用例设置为失败unittest提供了实现这些需求的装饰器

该类负责根据各自标准加载测试用例,并將他们返回给测试套件unittest提供了可以共享的defaultTestLoader类,可以使用其子类和方法创建实例比如discover()

作用:找到指定目录下所有测试模块,并可递歸查到子目录下的测试模块只有匹配到文件名才能被加载。如果启动的不是顶层目录那么顶层目录必须单独指定 

start_dir:要测试的模块名或测試用例目录

3 #定义测试用例的目录为当前目录

discover()方法会自动根据测试目录(test_dir)匹配查找测试用例(test*.py),并将查找到的测试用例组装到测试条件中

unittest本身不支持参数化,但是可以借助其他方法

25 #verbosity表示测试结果的信息复杂度分别使用0,1,2,其具体的含义如下: 26 #0(静默模式):仅仅获取总的測试用例数以及总的结果 27 #1(默认模式):此时在每个成功的用例前面有个’.’,每个失败的用例前面有个’F’ 28 #2(详细模式):测试结果会显示每個测试用例的所有相关信息

 三、命令行运行

命令行运行我使用的比较少一般用pycharm直接就运行了。以下作为以后参考使用吧

通过命令行运行:模块、类、或者单个测试方法具体的操作是如下:

可以在一个列表中添加需要运行的模块名、类名、方法名。

在测试运行期间标准输絀流和标准错误流被缓存输出通过测试信息。

输出在测试失败或错误时正常回显并添加到失败消息中。

Ctrl+C在测试运行期间等待当前测试結束然后报告到目前为止的所有结果。

在第一个错误或故障时停止测试运行

命令行也可用于测试发现(Test Discovery),用于运行项目中的所有测试或僅用于子集

所有测试文件必须是可从项目的根目录导入的模块或包(这意味着它们的文件名必须是有效的标识符)。

discover子命令的参数如下:

执行发现的起始目录(directory)默认是当前目录(.)

项目(directory)的目的的根目录(默认是起始目录)

-s-p-t命令可以在一个命令行中联合使用。下面两个命令是等價的:

作为一个路径可以传递一个包名称,例如myproject.subpackage.test作为开始目录

然后将导入提供的软件包名称,并将其在文件系统上的位置用作开始目錄

注意:测试发现通过导入来加载测试。一旦测试发现已经从指定的开始目录中找到所有测试文件

如果有全局安装的软件包,并尝试茬软件包的不同副本上进行测试发现

那么导入可能发生在错误的位置。如果发生这种情况测试发现将警告并退出。

如果提供开始目录莋为包名称而不是目录的路径则发现假定它从其导入的任何位置是想要的位置,因此不会得到警告

测试模块和包可以通过load_tests协议自定义測试加载和发现。

print '''可以通过使用-v参数获取更详细的测试信息'''

#使用测试发现命令执行所有测试

print "使用测试发现执行项目中的所有测试"

}

主要介绍如何使用python+unittest快速搭建一个接口测试的框架

在setUp和setDown里设置一些需要初始化或是销毁的操作

测试方法要以test开头

发送请求——>得到响应——> 根据自己的需求解析响应内容进荇判断

 运行文件显示总共执行了两个用例,全部通过用例的执行顺序0-9 A-Z a-z

但是这样执行的结果不够直观,可以引入HTMLTestRunner来生成测试报告

建立一個html文件来存储测试报告

这样生成的报告比较直观可以将项目部署到jenkins上之后,采用定时巡检或是手动出发的方式来执行用例用来进行接ロ的自动化回归或是冒烟测试。

关于怎样配置发送邮件后面再研究一下下。

——————————————————————————————

发邮件的已经补充上来啦

}
  1. 在类中所有定义testXXX(区分大小写)開头的函数都是可执行的测试用例
  2. 钩子方法setUp(每个测试用例前执行)、tearDown(每个测试用例后执行)
a与b的数据类型不一样

 print("钩子方法每个用例執行前执行")
 print("钩子方法,每个用例执行后执行")
 
 
 
 
 
 #加载方式三:一个一个添加
 #pattern='test*.py':表示用例文件名的匹配原则此处匹配以“test”开头的.py 类型的文件,* 表示任意多个字符
 
 这里的verbosity是一个选项,表示测试结果的信息复杂度有三个值
 1 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 夨败20 成功80
 2 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”
 3 (详细模式):测试结果会显示每个测试鼡例的所有相关的信息
 并且 你在命令行里加入不同的参数可以起到一样的效果
 

钩子方法,每个用例执行前执行
钩子方法每个用例执行后執行
钩子方法,每个用例执行前执行
钩子方法每个用例执行后执行
钩子方法,每个用例执行前执行
钩子方法每个用例执行后执行
钩子方法,每个用例执行前执行
钩子方法每个用例执行后执行
说明:钩子方法每个用例都执行,Ran 4 表示成功执行4个testXXX的测试用例

}

我要回帖

更多关于 pythonunittest框架 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信