问题
发现在设计编写并发执行的用例时,对用例的编写要求和普通执行的要求不太一样。
普通顺序执行时,用例脚本并无太严格的设计要求。
当要求并发执行时,某些地方就会变得有要求。
先来个抛砖引玉,大家评论区接龙:
顺序用例设计
def test_change_corp_info(self):
userid = GetFollowUserList().get_follow_user_list()['follow_user'][0]
external_userid = self.corp.get_list(userid=userid)['external_userid'][0]
remark = jsonpath(self.corp.get_detail(external_userid), '$..remark')[0]
r = self.corp.change_corp_info(userid, external_userid, remark=remark + '-0')
assert r['errcode'] == 0
assert r['errmsg'] == 'ok'
userid = GetFollowUserList().get_follow_user_list()['follow_user'][0]
external_userid = self.corp.get_list(userid=userid)['external_userid'][0]
remark_new = jsonpath(self.corp.get_detail(external_userid), '$..remark')
assert remark + '-0' in remark_new
这个用例咋一看似乎没什么问题,单个执行起来也是能过。但是集合到多个用例集中执行的时候,时不时就会出现失败。
注:pytest的并发执行相关可以查看链接 :python-pytest使用(4)-多线程多进程运行_pytest 多线程_George555_的博客-CSDN博客
失败分析:
首先分析用例,在用例中需要获取到 user_list 指定位置的userid 和external_userid ,获取的方式最后采用的是固定位置 0 的信息。
接着在其他的用例中有对user_list 的增删 操作,这样在同一个系统做并发执行用例的时候就会影响到这个用例获取到位置 0 的信息,最后导致用例的失败。
改进:
可以采取获取关键属性的特征进行获取目标的信息
问题:
不知道在设计用例脚本的时候有什么相关的规范要求和相应设计技巧
希望大家能够在评论区讨论