意思是把获取 cookie 单独抽离出来,放在 fixture 中实现吗? 或者 单独的模块? 那么 业务模块 ABC 的自动化执行的时候,单独的 cookie 模块的用例也会执行吗?最后测试报告中是否展示 cookie 怎么加开关呢? 有代码示例可以参考吗?
好的 感谢大佬,有思路了
但是 做成自动化后,用例有依赖额,需要解除这个依赖吗?
适用的啊,yaml 读取出来后先处理,把处理的结果传给 ddt 就行
使用 yaml 的强制转换
url: http://www.baidu.com
method: get
headers:
Content-Type: application/json
token: $token
data:
username: ${username}
password: !!str ${password}
可以看下这个在 yaml 的使用方式,可以参考这个
https://blog.csdn.net/qq_44708990/article/details/121682012
发现一个踩坑记录,各位可以参考下
https://blog.csdn.net/LANNY8588/article/details/123782967
在国企的话建议不要跳槽,在公司内部看看有木有适合的其他岗位,如产品经理,数据分析,项目经理等等,
有的话多接触,学习一下,然后考虑转型,不建议跳到外面
method: get
url: http://www.baidu.com
headers:
Content-Type: application/json
token: $token
data:
username: ${username}
password: ${password}
这个是 yaml 的测试用例存储
input_data = {'token': 'hdadhh21uh1283hashdhuhh2hd', 'username': 'admin', 'password': 123456}
def operate_template(path, var):
from string import Template
import yaml
file_stream = open(path, "r", encoding="utf-8")
str_temp =Template(file_stream.read())
new_data = str_temp.safe_substitute(var)
data = yaml.safe_load(new_data)
return data
result = operate_template("./temp.yaml", input_data)
print(type(result))
print(result)
pwd=result["data"]["password"]
print(type(pwd))
print(pwd)
可以使用 yaml 库读取 yaml 文件,然后通过 string 的 Template 方法替换变量
其中 input_data 可以写成全局变量,这只是个例子
上海的最好哈,感谢回复
是的,但是测试和开发语言相同,在 code review 、技术交流、代码提升上有帮助的啊,
至少不会被开发骗 老实说,被开发骗了好多次了
有道理,但是精力有限啊,一个测试行业而已,这么卷的吗?
哈哈哈,你是懂 jvm 的。。。
其实各种原因吧,包括个人原因、门槛原因等等
应该是 LearDdt().ddt_add() 这样子吧
我想到的也是这个,不确定行不行?我自己的工作中没有用到 sskl,所以没法试,期待楼主试一下
有代码吗?不知道代码没法说啊?你需要实现成啥样?
终于碰到 fastapi 的人了
class PermissionException(Exception):
def __init__(self, body):
self.body = body
类似于这样,然后在 exc.body 中获取到
不要用这种方法,我之前也是这么写的,但是经常报错,我换了种方式,就是 log 中的 log_msg 作为参数传递过来,不用这个方式
目前还招人妈
好啦,问题已解决,谢谢各位啦,感谢各位提出的思路,感谢@xiaoj (杰) 和@keke
在这里做个总结:
def skipTest(value):
def deco(function):
def wrapper(self, *args, **kwargs):
if not getattr(self, value):
self.skipTest('跳过用例')
else:
function(self, *args, **kwargs)
return wrapper
return deco
这个方法适用于当前的测试类中,当且仅当只依赖一个测试用例的时候使用,比如登录,获取用户信息,退出,在这 3 个测试用例中,获取用户信息和退出都依赖登录,所以可以使用这种依赖方法,如果当前的测试用例还依赖了第二个其他的测试用例,则本方法不适应
2.keke 的方法
def dependon(depend=None):
import functools
def wraper_func(test_func):
@functools.wraps(test_func)
def inner_func(self):
if depend == test_func.__name__:
raise ValueError("{} cannot depend on itself".format(depend))
print("self._resultForDoCleanups", self._resultForDoCleanups.__dict__)
failures = str([fail[0] for fail in self._outcome.result.failures])
errors = str([error[0] for error in self._outcome.result.errors])
skipped = str([error[0] for error in self._outcome.result.skipped])
flag = (depend in failures) or (depend in errors) or (depend in skipped)
test = unittest.skipIf(flag, '{} failed or error or skipped'.format(depend))(test_func)
return test(self)
return inner_func
对这个方法做了一下小小的改动,以上就是最新的代码。其中 depend 参数的类型为 string,值就是测试用例的方法名称。
可以适用于依赖的测试用例失败或错误时都跳过测试用例,有 dependon 装饰器标记的用例必须在用例 depend(test_login)之后执行
此方法适用于 python3.4+,如果是低版本的 python3,请将 self._outcome.result 修改为 self._outcomeForDoCleanups,如果你是 python2 版本,请将 self._outcome.result 修改为 self._resultForDoCleanups
最后,再次感谢各位,祝各位春节快乐!
这个思路不错,但是如果有多个依赖关系的话,这样就不太好,我一直想获取 test_1 的测试结果,就是获取不到,有了 test_1 的执行结果,就可以判断了
有这个思路,但是写不出来,没法获取依赖方法的测试执行结果,可以给个 demo 吗
嗯啊,这个用过,感觉还是 pytest 大法好,但是当前只能用 unittets 实现 ,有相关思路吗
哦哦 没有用这个框架
思路不错,搞一波再说