1. 断言-正则法:
当前,正则断言时提取的都是字符串,那么预期值就也写字符串就好了,没必要进行求值类型的设计,所以先改一下正则断言的规则。如下:
然后设置好并保存:
o":(.*?),"e=2
这个提取到的应该是en,也就是字符串0,此处故意写成会被变成字符串的2作为预期值。
然后去写代码:
# # 断言-正则法
if assert_zz != '': # 说明有配置
for i in assert_zz.split('\n'):
zz = i.split('=')[0].rstrip()
want = i.split('=')[1].lstrip()
value = re.findall(zz, res)[0]
self.assertEqual(want, value, '值不等')
运行下看看报告:
发现程序并没有成功走到正则断言上,因为unittest的步骤函数中,一旦断言失败,那么该条用例内的代码便不再继续走了。
昨天故意断言错了路径法,所以导致正则断言没被运行,这里删除路径法的设置并保存:
再运行一次:
现在正常了。
2. 断言-全文检索法
接下来实现全文检索是否存在的断言方式,先看下规则:
再看下实际返回体:
然后设置好:
添加了俩个实际存在关键字符串,0和errmsg,还有一个不存在的字符串:谁不是路人
注意,别忘了删除上面的断言哦~ 否则又运行不到这个全文检索了。别忘了保存!!!
然后是 代码部分:
# # 断言-全文检索法
if assert_qz != '': # 说明有配置
for i in assert_qz.split('\n'):
if i not in res:
raise AssertionError('字符串不存在:%s' % i)
重启服务,运行结果:
好了,这里结束,基本搞定了这俩个提取和三个断言, 下节会讲讲输出优化和接口mock的小功能。
3. 时区问题
临时追加一个被忽略的设置,就是时区,django默认时区并不是中国的,这会影响到报告生成时间的时区,导致早了8小时。
所以要改一下,具体改的位置在settings.py里 最后:
改成:
重启服务即可生效。