yaml模块管理用例,单元测试

1.yaml 可以用来做数据驱动,比较灵活

import yaml   #用来读配置文件的比如file文件 文件以yaml和yml结尾   这种格式写用例比较容易处理,字典方便取值 取不到就没有不报错,主要是灵活。

f = open('login.yaml',encoding='utf-8')
res = yaml.load(f) #加载读出文件 将键值对转化为字典
print(res)

比如:login.yml
-  #是list的写法  可以防止字典相同的key覆盖
url : /api/user/login
method : post
detail : 正常登录
data :
username : niuhanyang
passwd : aA123456
check :
- userId
- sign

-
url : /api/user/login
method : post
detail : 密码错误
data :
username : niuhanyang
passwd : aA12333
check :
- 密码错误

-
url : /api/user/login
method : post
detail : 不传密码
data :
username : niuhanyang
check :
- 必填参数未填
2.单元测试
import unittest    #单元测试模块
import HTMLTestRunner #用来生成报告用
from BeautifulReport import BeautifulReport as bf #好看的测试报告 bf是别名方便使用
class TestCalc(unittest.TestCase): #继承 变为测试用例
def setUp(self):
print('setup是啥时候运行的')
#每个用例运行之前运行的 可以作为后续的前提条件
def tearDown(self):
print('teardown是啥时候运行')
#每个用例运行之后运行的 可以在收尾做比如删除数据的操作。
@classmethod #定义类方法
def setUpClass(cls): #直接继承父类方法
#在所有用例执行之前运行的
print('什么时候运行的setupclss')

@classmethod
def tearDownClass(cls):
#在所有用例都执行完之后运行的
print('什么时候运行的teardownclass')

def testliuwei(self): #用例执行顺序是按照首字母的顺序(在报告中可看出)
'''刘伟测试''' #通过‘’‘来加入用例描述 报告中就会加入用例描述
print('刘伟')
self.assertEqual(1,1) #该子类没有 继承父类比较两个值 后面也可以再加参数作为提示信息。
def testzch(self): #以test开头就可以运行用例 否则不会自动运行
'''赵传慧测试'''
print('赵传慧')
self.assertEqual(1,2)
def testa(self):
print('testa')
self.assertEqual(1,1)
def testc(self):
print('testc')
self.assertEqual(1,2)


# unittest.main() #会运行当前python文件里面的所有测试用例 **运行时注意run 产生报告时不用该模式

将用例产生报告主要有以下几个步骤
# 1、先把所有的测试用例都放到用例集。用例集也做测试套件是用来存放测试用例的
#2、运行这些测试用例
#3、产生报告
suite = unittest.TestSuite() #测试集合 存放用例 其实是一个list
suite.addTest( unittest.makeSuite(TestCalc) ) #把刚才写的用例加进来 **写入类名

bf报告生成
run = bf(suite) #实例化一下,他是一个类必须实例化使用
run.report(description='描述必须写',filename='test') #还可指定log位置等

HtmlTESTRunner如何产生报告
# f = open('test.html','wb') #以2进制模式 不考虑编码集的问题
# runner = HTMLTestRunner.HTMLTestRunner(f,title='双鱼座用例标题',description='这是用例描述') #后面两个参数是非必须的
# runner.run(suite) #运行用例

猜你喜欢

转载自www.cnblogs.com/cslw5566/p/9136569.html