数据驱动
当有多个用例都在某个界面下按照相同逻辑执行,只是参数不同时,可以在类中定义
dd_cases列表,该列表中存放的是一个个字典,每个字典代表一个用例,字典中存放用例名name,与参数para。如下,运行后会创建5个用例
class UI_000x:
ddt_cases = [
{
'name': '用户登录0001',
'para': ['', '8888', '请输入用户名']
},
{
'name': '用户登录0002',
'para': ['byhy', '8888888', '登录失败 : 用户名或者密码错误']
},
{
'name': '用户登录0003',
'para': ['byhy', '8888', '登录失败 : 用户名或者密码错误']
},
{
'name': '用户登录0004',
'para': ['dajlwkdja', '88888888', "登录失败 : 用户名或者密码错误"]
},
{
'name': '用户登录0005',
'para': ['byhy', '', '请输入密码']
}
]
def teststeps(self):
STEP('1', "登录网站")
wd = webdriver.Chrome()
username, password, info = self.para
GSTORE["wd"] = wd
wd.implicitly_wait(10) # 隐式等待时间
wd.get("http://127.0.0.1/mgr/sign.html")
element = wd.find_element(By.CSS_SELECTOR, "#username")
element.send_keys(username)
INFO("输入用户名成功")
element = wd.find_element(By.CSS_SELECTOR, "#password")
element.send_keys(password)
INFO("输入密码成功")
element = wd.find_element(By.CSS_SELECTOR, "[type='submit']")
element.click()
text = wd.switch_to.alert.text
INFO(text)
CHECK_POINT("检查是否弹出预计的警告", text == info)
wd.switch_to.alert.accept() # 点击确定
挑选用例执行
根据name属性指定:hytest --test空格+name名称即可
当需要指定多个用例的时候,需要分别用--test的方式指定
--suite可以指定套件执行,将会对目录下所有的用例执行,若传入的是某个文件名,会将该文件下所有的用例执行
还可以根据标签执行用例,但需要先给用例打标签
可定义force_tags全局变量=['tag1', 'tag2'...],存放标签名,此时,这个文件里面所有的测试用例都具有这些标签。
标签必须放在列表中,即使只有一个标签
若需要对某个用例定义标签,可以在类中定义tags属性
根据标签挑选用例:--tag 标签名
--tagnot 标签名 代表不包含标签名的用例
若选择多个标签
--tag " '标签名1' and '标签名2' ", and可以换为or,代表或