文章插图
文章插图
?
例如,我们要新增登录功能测试用例:
首先,只需在testyaml目录下新增一个页面对象yaml文件,参考login.yaml格式编写即可 。这些文件是提供给封装页面对象类调用并执行定位识别操作 。
点我领取全套软件测试自动测试全栈资料教学视频
-id: test_login001.1detail : 手机号和密码为空登录screenshot : phone_pawd_emptydata:phone: ""password: ""check :- 手机号不能为空-id: test_login001.2detail : 手机号为空登录screenshot : phone_emptydata :phone: ""password : aacheck :- 手机号不能为空-id: test_login001.3detail : 密码为空登录screenshot : pawd_emptydata :phone : 13511112222password: ""check :- 密码不能为空-id: test_login001.4detail : 非法手机号登录screenshot : phone_errordata :phone : abcpassword: aacheck :- 手机号格式不对-id: test_login001.5detail : 手机号或密码不匹配screenshot : pawd_errordata :phone : 13511112222password: aacheck :- 账号密码错误-id: test_login001.6detail : 手机号和密码正确screenshot : phone_pawd_successdata :phone : 13865439800password: ********check :- yingojalogin_data.yamllogin_data.yaml
文章插图
文章插图
?
其次,在testdata目录下新增一个login_data.yaml文件提供给登录接口传参的测试数据,编写格式参考login_data.yaml文件 。
#!/usr/bin/env python# _*_ coding:utf-8 _*___author__ = 'YinJia' import os,syssys.path.Append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))from config import settingfrom selenium.webdriver.support.select import Selectfrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.webdriver.common.by import Byfrom public.page_obj.base import Pagefrom time import sleepfrom public.models.GetYaml import getyamltestData = https://www.isolves.com/it/cxkf/kj/2022-05-10/getyaml(setting.TEST_Element_YAML+ '/' + 'login.yaml')class login(Page):"""用户登录页面"""url = '/'dig_login_button_loc = (By.ID, testData.get_elementinfo(0)) def dig_login(self):"""首页登录:return:"""self.find_element(*self.dig_login_button_loc).click() sleep(1)# 定位器,通过元素属性定位元素对象# 手机号输入框login_phone_loc = (By.ID,testData.get_elementinfo(1)) # 密码输入框login_password_loc = (By.ID,testData.get_elementinfo(2)) # 取消自动登录keeplogin_button_loc = (By.XPATH,testData.get_elementinfo(3)) # 单击登录login_user_loc = (By.XPATH,testData.get_elementinfo(4)) # 退出登录login_exit_loc = (By.ID, testData.get_elementinfo(5)) # 选择退出login_exit_button_loc = (By.XPATH,testData.get_elementinfo(6))def login_phone(self,phone):"""登录手机号:param username::return:"""self.find_element(*self.login_phone_loc).send_keys(phone)def login_password(self,password):"""登录密码:param password::return:"""self.find_element(*self.login_password_loc).send_keys(password) def keeplogin(self):"""取消单选自动登录:return:"""self.find_element(*self.keeplogin_button_loc).click()def login_button(self):"""登录按钮:return:"""self.find_element(*self.login_user_loc).click()def login_exit(self):"""退出系统:return:"""above = self.find_element(*self.login_exit_loc)ActionChains(self.driver).move_to_element(above).perform() sleep(2)self.find_element(*self.login_exit_button_loc).click()def user_login(self,phone,password):"""登录入口:param username: 用户名:param password: 密码:return:"""self.open()self.dig_login()self.login_phone(phone)self.login_password(password)sleep(1)self.keeplogin()sleep(1)self.login_button()sleep(1)phone_pawd_error_hint_loc = (By.XPATH,testData.get_CheckElementinfo(0))user_login_success_loc = (By.ID,testData.get_CheckElementinfo(1))exit_login_success_loc = (By.ID,testData.get_CheckElementinfo(2))# 手机号或密码错误提示def phone_pawd_error_hint(self):return self.find_element(*self.phone_pawd_error_hint_loc).text# 登录成功用户名def user_login_success_hint(self):return self.find_element(*self.user_login_success_loc).text # 退出登录def exit_login_success_hint(self):return self.find_element(*self.exit_login_success_loc).textloginPage.py
文章插图
文章插图
?
然后,在page_obj目录下新增一个loginPage.py文件,是用来封装登录页面对象类,执行登录测试流程操作 。
推荐阅读
- 都匀毛尖都匀红茶,贵州都匀毛尖是白茶吗
- 胸闷想小便
- 蕾丝|短发的许晴显出中年感,但蕾丝套装穿得挺高调,身形气质都掩不住
- 办公室性骚扰都有哪些伎俩
- 好家伙|钓鱼佬平时胆子都是这么大的吗?好家伙,还敢拍照!
- 宝宝高烧脸上有红点
- 新生儿黄疸怎样晒太阳?
- 天麻丸治颈椎病效果如何
- 健身肩关节响
- 老年人头发变白的原因