当前位置: 首页 > news >正文

淄博网站建设高端企业做加盟的网站建设

淄博网站建设高端企业,做加盟的网站建设,wordpress 文章图片自动添加图片,做宣传的网站自动化测试脚本开发 一、自动化测试用例开发 1、用例设计需要注意的点 2、设计一条测试用例 二、脚本开发过程中的技术 1、线性脚本开发 2、模块化脚本开发#xff08;封装线性代码到方法或者类中。在需要的地方进行调用#xff09; 3、关键字驱动开发#xff1a;selen…自动化测试脚本开发 一、自动化测试用例开发 1、用例设计需要注意的点 2、设计一条测试用例 二、脚本开发过程中的技术 1、线性脚本开发 2、模块化脚本开发封装线性代码到方法或者类中。在需要的地方进行调用 3、关键字驱动开发selenium ide关键字驱动开发 4、数据驱动开发数据和脚本分离。数据专门存储在外部的文件中。结合unittest框架的ddtdata driver test模块 5、po设计模式将页面中的元素和操作的方法封装在一个页面对象中只需要调用对象中封装的元素和操作方法来实现测试用例不需要真实的页面 三、蜜蜂电商系统的脚本设计-1 采用pythonseleniumunitte实现自动化测试的基本脚本还会涉及到ddtjson实现数据驱动git和gitee实现持续集成。 1、前期准备 public放公共访问、公用的一些模块发邮件的模块、记录日志的模块、登录模块、登出模块等testcases放所有采用unittest框架设计的测试用例的模块 register mifeng_register.pymifeng_register_username.pymifeng_register_email.py…… login mifeng_login.pymifeng_login_username.py…… searchgouwuorderpay testdata测试用例所需要的数据驱动文件采用json文件 mifeng_register.json……. testreporthtml格式的测试报告文件 09211412.html testlog日志文件maintest.py入口文件、主运行文件 2、正向注册用例设计 # 采用unittest框架实现正向注册的用例 import unittest from selenium import webdriver from selenium.webdriver.common.by import By import time# 单元测试用例 class mifeng_register(unittest.TestCase):def setUp(self):# 创建浏览器对象self.driver webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(10)# 打开某电商首页self.driver.get(xxx)def test_register(self):正向注册功能测试用例# # 打开蜜蜂电商首页# self.driver.get()# 点击首页的“免费注册”按钮timestr time.strftime(%H%M%S)username blue_ timestremail username 163.comself.driver.find_element(By.LINK_TEXT, 免费注册).click()# 输入正向的用户名self.driver.find_element(By.ID, username).send_keys(username)# 输入正向的邮箱self.driver.find_element(By.ID, email).send_keys(email)# 输入正向的密码self.driver.find_element(By.ID, password).send_keys(123456)# 输入正向的确认密码self.driver.find_element(By.ID, repassword).send_keys(123456)# 勾选协议# 点击“立即注册”按钮self.driver.find_element(By.LINK_TEXT, 立即注册).click()# 强制等待先等5s跳过中间页面time.sleep(5)# 断言sj self.driver.find_element(By.XPATH, /html/body/div[4]/div[1]/div[2]/div[1]/div[1]/h3/font[1]).textyq usernameself.assertEqual(yq, sj, 预期结果和实际结果不一致)def test_register_chongfu(self):重复注册功能测试用例# 打开电商首页self.driver.get(xxx)# 点击首页的“免费注册”按钮self.driver.find_element(By.LINK_TEXT, 免费注册).click()# 输入正向的用户名self.driver.find_element(By.ID, username).send_keys(blue_002)# 输入正向的邮箱self.driver.find_element(By.ID, email).send_keys(blue_002163.com)# 输入正向的密码self.driver.find_element(By.ID, password).send_keys(123456)# 输入正向的确认密码self.driver.find_element(By.ID, repassword).send_keys(123456)# 勾选协议# 点击“立即注册”按钮self.driver.find_element(By.LINK_TEXT, 立即注册).click()# 强制等待先等5s跳过中间页面time.sleep(5)# 断言# sj self.driver.find_element(By.XPATH,/html/body/div[4]/div[1]/div[2]/div[1]/div[1]/h3/font[1]).textsj self.driver.current_urlyq rxxx# yqblue_002self.assertEqual(yq, sj, 预期结果和实际结果不一致)def tearDown(self):# 关闭浏览器self.driver.quit()if __name__ __main__:unittest.main()3、主运行文件 # 主运行文件获取测试用例集合、运行测试用例集合、得到可视化测试报告.... import unittest from BeautifulReport import BeautifulReport import time# 获取测试集合 # 获取级联指定父目录可以遍历子目录要求目录必须是包目录下的测试用例 discover unittest.defaultTestLoader.discover(r./TestCases/,patternmifeng*.py) print(discover)# 用时间戳作为测试报告的文件名 strTime time.strftime(%m%d%H%M) filename report_strTime# 创建运行器对象 runner BeautifulReport(discover) runner.report(电商自动化测试报告,filename,./TestReport/)4、登录模块的测试用例 # 采用unittest框架实现正向登录的用例 import unittest from selenium import webdriver from selenium.webdriver.common.by import By import time# 单元测试用例 class mifeng_login(unittest.TestCase):def setUp(self):# 创建浏览器对象self.driver webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(10)# 打开电商首页self.driver.get(xxx)def test_login_01(self):正常登录的测试用例# self.driver.get(xxx)self.driver.find_element(By.LINK_TEXT, 登陆).click()# 输入用户名和密码正向数据self.driver.find_element(By.ID, username).send_keys(blue_001)self.driver.find_element(By.ID, password).send_keys(123456)# 点击登陆按钮self.driver.find_element(By.XPATH, //*[idlogin-form]/div/a).click()# 断言time.sleep(5)sj self.driver.find_element(By.XPATH, /html/body/div[4]/div[1]/div[2]/div[1]/div[1]/h3/font[1]).textyq blue_001self.assertEqual(yq, sj, 预期结果和实际结果不一致)def test_login_02(self):登录用户名为空的测试用例# self.driver.get(xxx)self.driver.find_element(By.LINK_TEXT, 登陆).click()# 用户名设置为空self.driver.find_element(By.ID, username).send_keys()self.driver.find_element(By.ID, password).send_keys(123456)# 点击登陆按钮self.driver.find_element(By.XPATH, //*[idlogin-form]/div/a).click()# 断言time.sleep(5)sj self.driver.find_element(By.XPATH, //*[idlogin-form]/div/dl[1]/dd/span/font).textyq 请输入用户名self.assertEqual(yq, sj, 预期结果和实际结果不一致)def test_login_03(self):未注册用户名登录的测试用例# self.driver.get(xxx)self.driver.find_element(By.LINK_TEXT, 登陆).click()# 用户名设置为空self.driver.find_element(By.ID, username).send_keys(blue01)self.driver.find_element(By.ID, password).send_keys(123456)# 点击登陆按钮self.driver.find_element(By.XPATH, //*[idlogin-form]/div/a).click()# 断言time.sleep(5)sj self.driver.current_urlyq xxxself.assertEqual(yq, sj, 预期结果和实际结果不一致)def tearDown(self):self.driver.quit()if __name__ __main__:unittest.main()5、级联目录下的用例获取 # 主运行文件获取测试用例集合、运行测试用例集合、得到可视化测试报告.... import unittest from BeautifulReport import BeautifulReport import time# 获取测试集合 # 获取级联指定父目录可以遍历子目录要求目录必须是包目录下的测试用例 discover unittest.defaultTestLoader.discover(r./TestCases/,patternmifeng*.py) print(discover)6、修改个人资料的测试用例 # 采用unittest框架实现一个个人资料正常更新的用例 # 先登录--更新资料--退出 import unittest from selenium import webdriver from selenium.webdriver.common.by import By import time from 电商项目1.Public.Basic import login,logout# 单元测试用例 class mifeng_userinfo(unittest.TestCase):def setUp(self):# 创建浏览器对象self.driver webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(10)# 先登录login(self.driver)def test_userinfo_01(self):正向个人资料修改功能测试用例# 登录成功改资料# 点击个人资料超链接self.driver.find_element(By.LINK_TEXT,个人资料).click()time.sleep(2)# 设置昵称、QQ和性别、出生日期等self.driver.find_element(By.ID, nickname).clear()self.driver.find_element(By.ID,nickname).send_keys(王同学)self.driver.find_element(By.ID, qq).clear()self.driver.find_element(By.ID,qq).send_keys(2659160211)self.driver.find_element(By.XPATH,//*[idprofile-form]/dl[3]/dd/label[2]/input).click()self.driver.find_element(By.XPATH,//*[idbirth_year]/option[78]).click()self.driver.find_element(By.XPATH,//*[idbirth_month]/option[2]).click()self.driver.find_element(By.XPATH,//*[idbirth_day]/option[20]).click()# 点击更新按钮self.driver.find_element(By.CSS_SELECTOR,#profile-form div button).click()# 断言sj self.driver.find_element(By.XPATH,/html/body/div/div[2]/h3).textyq 更新资料成功self.assertEqual(yq,sj)def test_userinfo_02(self):更新个人资料头像修改功能测试用例# 登录成功改资料# 点击个人资料超键self.driver.find_element(By.LINK_TEXT,个人资料).click()time.sleep(2)# 提交头像self.driver.find_element(By.NAME,avatar_file).send_keys(rd:/aa.jpg)# 保存头像self.driver.find_element(By.ID,save-avatar-btn).click()# 点击更新按钮self.driver.find_element(By.CSS_SELECTOR,#profile-form div button).click()# 断言sj self.driver.find_element(By.XPATH,/html/body/div/div[2]/h3).textyq 更新资料成功self.assertEqual(yq,sj)def tearDown(self):# 退出logout(self.driver)# 关闭浏览器self.driver.quit()if __name____main__:unittest.main()8、数据驱动测试 对设计过的用例使用数据驱动的方式实现 数据驱动由于数据的变化而导致结果的不同来实现不同的测试用例的过程。 实现数据驱动数据和脚本步骤分离式管理 数据的存储方式 jsoncsvexcelyaml数据库–pymysql 知识点pythonunittestddtjson来实现数据驱动 使用ddt实现数据驱动的步骤 安装ddt模块pip install ddt准备一个json数据文件在用例模块中导入ddt的两个类file_data、ddtddt修饰类file_datajson文件修饰单元测试用例方法单元测试用例方法的参数要和数据文件中保持一致使用用例的参数替换掉对应的脚本中的常量值 9、邮件发送 10、日志记录 把测试用例执行情况记录在一个文件中便于后续的查验。 步骤 编写logging的配置文件在主运行文件中调用一次配置文件和配置文件如何设计有关 如果配置文件是线性代码直接导入一次即可如果配置文件封装在方法中导入方法并调用一次如果封装在类中的方法里导入类、创建对象调方法 测试用例中导入logging模块logging调用不同等级的日志输出方法 fatalerrorinfodebug 四、代码的版本管理 版本管理多人协作、自动化脚本开发的时候需要进行版本的维护 版本管理介绍 svn集中式的版本管理工具分布式版本管理 git版本管理工具gitee码云远程仓库github、gitlib这几个都是主流的仓库 gitee注册 git的版本管理的常见命令 常见的工作区间 workspace工作区可以理解为你自己开发代码的文件夹包含一个.git隐藏文件夹git init staging area暂存区/缓存区临时存储文件的地方 local repository本地仓库 remote repository远程仓库 常见的命令 add将工作区的文件添加到缓存区commit将缓存区的数据提交到本地仓库git push将本地仓库的文件上传到远程仓库clone从远程仓库到本地仓库一般第一次从远程下载建议使用pull从远程仓库到本地工作区一般已经在本地有了文件版本的情况下使用 配置SSH公钥 在gitee上创建一个空的仓库 Git 全局设置: git config --global user.name 王同学 git config --global user.email w123456163.com从本地上传脚本到远程仓库 先创建本地工作空间 添加工作空间下的文件到缓存区 git add *将当前工作区的所有文件都加到缓存区git add a.txt只加这一个文件 缓存区数据保存到本地仓库git commit -m “v1” 本地仓库和远程仓库建立关联git remote add origin gitee仓库项目地址 本地仓库上传到远程仓库git push -u origin “master” 回到gitee刷新仓库 mkdir blue-mi-feng cd blue-mi-feng git init touch README.md git add README.md git commit -m first commit git remote add origin gitee仓库项目地址 git push -u origin master从远程下载到本地git clone 地址 已经可以将自动化代码上传到gitee远程仓库进行管理了。 后续就可以直接从远程仓库借助jenkins工具实现自动部署和运行定时运行触发运行 五、jenkins实现持续集成 1、jenkins软件的安装 需要jdk11的支持所以提前安装jdk11java的语言包安装jenkins对应的支持jdk11的版本jenkins软件插件安装两部分有一部分安装失败不影响使用记住用户名和密码 2、jenkins的环境变量配置 作用和windows系统的环境变量配置很相似 jenkinsgit实现自动化部署和执行需要安装git和gitee插件作相应的配置即可 3、插件安装和配置 1、需要安装git和gitee插件 2、配置git全局的环境配置 3、gitee中获取私人令牌 4、在jenkins中配置gitee参数 5、添加用户名和密码凭据 4、创建jenkins任务 1、新建项目 2、配置git仓库 3、触发任务设置 4、添加window批处理构建 保存退出 5、运行任务 等待设置的定时时间 六、pom设计模式 1、pom概述 POMPage Object Model是一种自动化测试设计模式它将页面对象和测试用例代码分离开来使测试代码更加清晰和易于维护 POM模式的核心思想是将每个页面视为一个对象类并将页面的元素和操作封装在该对象中。测试代码只需要调用页面对象的方法而不需要关心页面的具体实现细节。 POM模式的优点包括 提高测试代码的可读性和可维护性测试代码只需要调用页面对象的方法而不需要关心页面的具体实现细节使测试代码更加清晰和易于维护。提高测试代码的复用性页面对象可以在多个测试用例中重复使用减少了代码的重复编写操作提高测试代码的稳定性页面对象的封装可以避免测试代码对页面元素的直接操作减少了测试代码对页面的依赖从而提高了测试代码的稳定性 POM模式的实现步骤包括 封装页面元素定位和操作方法将页面元素和操作封装在页面对象中可以使用selenium或其他自动化测试工具提供的API创建页面对象将每个页面视为一个对象并将页面的元素和操作封装在该对象中进行调用编写测试代码测试代码只需要调用页面对象的方法而不需要关心页面的具体实现细节执行测试用例执行测试用例时测试代码会调用页面对象的方法完成测试操作 总之POM模式是一种优秀的自动化测试设计模式可以提高测试代码的可读性、可维护性、复用性和稳定性。在实际的自动化测试中可以根据具体的需求和场景选择是否采用POM模式 2、做项目目录分层 common commondriver.py封装webdriver api常见的方法邮件、日志的模块放在该目录下 pageobject RegisterPOLoginPOxxxPO testcases login mifeng_login.pymifeng_login_username.pyxxx register mifeng_register.pymifeng_register_username.pyxxx xxx testreporttestlogmaintest.py 3、commondriver设计 # 实现封装webdriver api方法的创建浏览器对象、页面打开、页面元素定位、点击、输入、获取文本、切换窗口、弹框、frame等 # 对开源软件webdriver的二次封装 from selenium import webdriver from selenium.webdriver.common.by import By import timeclass commondriver():功能构造方法实现的是变量的初始化def __init__(self):# 可以先将self.driver变量看作是Chrome浏览器的对象# 声明调用的对象固定写法self.driver: webdriver.Chrome None# 实现一个打开浏览器的方法设计一个方法给不同的参数可以启动不同的浏览器对象def open_browser(self, browserchrome):功能实现一个打开浏览器的方法:param browser: 可以是chrome、ff、firefox、safari、edge等:return:暂时先不给后面可以给self.driverif (browser ff or browser firefox):self.driver webdriver.Firefox()elif (browser edge):self.driver webdriver.Edge()else:self.driver webdriver.Chrome()# 实现浏览器的最大化显示页面元素的隐式等待self.driver.maximize_window()self.driver.implicitly_wait(10)# 在多页面操作的时候需要使用同一个页面对象return self.driver# 关闭浏览器对象def close_browser(self):功能关闭浏览器对象:return:self.driver.quit()# 打开指定的url地址页面是需要参数urldef open_url(self, url):功能打开指定的url地址:param url: 页面地址:return: 不需要if (url.startswith(http) or url.startswith(https)):self.driver.get(url)else:print(输入的地址不正确请重新输入)# 页面元素定位和操作self.driver.find_element(By.ZZ,xx).yy()# 定义页面定位方法为私有的只在本类内调用其他不能调用def __find_element(self, locator):功能通过给定的定位器来判断是哪一种定位方式xpath\css\id\linktext:param locator: 是属性值:return:element元素对象if (locator.startswith(/) or locator.startswith(//)):# 符合上面条件的定位方式是xpath定位element self.driver.find_element(By.XPATH, locator)elif (locator.startswith(.) or (locator.startswith(#) or locator.startswith([))):# 符合上面条件的定位方式是css定位element self.driver.find_element(By.CSS_SELECTOR, locator)else:# 默认是idtry:element self.driver.find_element(By.ID, locator)except:element self.driver.find_element(By.LINK_TEXT, locator)# 返回element页面元素对象return element# 封装文本框的输入方法具备提前清空功能# 两个参数定位器locator、输入的数据valuedef input(self, locator, value):功能定位文本框清空内容输入文本:param locator: 定位器:param value: 输入的值:return: 不需要element self.__find_element(locator)element.clear()element.send_keys(value)# 定义一个click点击方法def click(self, locator):功能定位元素并点击:param locator::return:element self.__find_element(locator)element.click()# 获取页面元素的文本信息def get_text(self, locator):功能获取页面元素的文本信息:param locator::return: 返回获取的文本element self.__find_element(locator)return element.text# switch_to的用法def switch_to(self, typewindow, locator):功能切换窗口和frame:param type::param locator::return:if (type frame):element self.__find_element(locator)self.driver.switch_to.frame(element)else:handles self.driver.window_handlesself.driver.switch_to.window(handles[-1])# 待补充后续需要的方法即可def get_current_url(self):获取页面的地址:return:return self.driver.current_urlif __name__ __main__:# 创建该类的对象cd commondriver()cd.open_browser()# 打开百度页面cd.open_url(https://www.baidu.com)time.sleep(2)# 定位百度文本框并输入CSDN叫我王同学cd.input(kw, CSDN叫我王同学)time.sleep(2)# 点击百度一下按钮cd.click(su)time.sleep(2)# 关闭浏览器cd.close_browser()4、注册页面对象设计 # http://shop.mifeng.qfedu.com/ # 电商注册页面的一些特点url、用户名、邮箱文本、密码、确认密码文本框、勾选复选框、立即注册按钮、登陆按钮、异常提示信息框 import time from MiFengShopPO.common.commondriver import commondriver# 封装注册页面类使页面直接继承使用封装好的通用api方法 class RegisterPage(commondriver):# 构造方法只需要指定注册页面的url地址即可def __init__(self,driver):功能初始化注册页面的地址直接绑定在类中# 接收外部一个统一的页面对象到当前页面self.driver driverself.url xxx# 封装注册页面上的用户名文本框输入值def input_username(self, value):功能定位用户名文本框直接指定使用id属性定位并且绑定其输入功能:param value: 输入的数据:return:self.input(username, value)def input_email(self, value):功能定位邮箱文本框并且绑定其输入功能:param value: 输入的数据:return:self.input(email, value)def input_password(self, value):功能定位密码文本框直接指定使用id属性定位并且绑定其输入功能:param value: 输入的数据:return:self.input(password, value)def input_repassword(self, value):功能定位确认密码文本框直接指定使用id属性定位并且绑定其输入功能:param value: 输入的数据:return:self.input(repassword, value)def click_agree(self):功能定位同意协议id属性并点击:return:self.click(agree)def click_registerNow(self):功能定位立即注册XPATH并点击:return:self.click(//*[idregister-form]/div/div[2]/a)def click_login(self):功能定位登陆按钮XPATH并点击LINK_TEXT效率低:return:self.click(/html/body/div[2]/div/div/div/div/a)def get_username_text(self):功能获取用户名对应的错误提示信息:return:返回值是错误信息text self.get_text(#register-form div dl:nth-child(1) dd span font)return textdef get_email_text(self):功能获取邮箱对应的错误提示信息:return:返回值是错误信息text self.get_text(#register-form div dl:nth-child(2) dd span font)return textdef get_password_text(self):功能获取密码对应的错误提示信息:return:返回值是错误信息text self.get_text(//*[idregister-form]/div/dl[3]/dd/span/font)return textdef get_repassword_text(self):功能获取确认密码对应的错误提示信息:return:返回值是错误信息text self.get_text(//*[idregister-form]/div/dl[4]/dd/span/font)return textif __name__ __main__:# 先创建页面rp RegisterPage()rp.open_browser()rp.open_url(rp.url)# 输入用户名为空rp.input_username()# 输入邮箱rp.input_email(blue_001163.com)# 输入密码rp.input_password(123456)# 输入确认密码rp.input_repassword(123456)# 点击立即注册按钮rp.click_registerNow()time.sleep(1)# 断言yq 请设置用户名sj rp.get_username_text()assert yq sj5、测试用例层设计 import time # 反向的注册的用例结合unittest框架 import unittest from MiFengShopPO.pageobject.RegisterPage import RegisterPage# 创建单元测试类 class mifeng_register_username(unittest.TestCase):def setUp(self):# 创建注册页面对象self.rp RegisterPage()# 打开Chrome浏览器self.rp.open_browser()# 打开电商注册页面self.rp.open_url(self.rp.url)def test_register_username_01(self):用户名为空:return:self.rp.input_username()self.rp.input_email(blue_012163.com)self.rp.input_password(123456)self.rp.input_repassword(123456)self.rp.click_registerNow()# 断言time.sleep(5)yq 请设置用户名sj self.rp.get_username_text()self.assertEqual(yq,sj)def test_register_username_02(self):用户名为test:return:self.rp.input_username(test)self.rp.input_email(blue_013163.com)self.rp.input_password(123456)self.rp.input_repassword(123456)self.rp.click_registerNow()# 断言time.sleep(5)yq 用户名不符合格式要求sj self.rp.get_username_text()self.assertEqual(yq,sj)def test_register_username_03(self):用户名为数字开头:return:self.rp.input_username(123test)self.rp.input_email(blue_014163.com)self.rp.input_password(123456)self.rp.input_repassword(123456)self.rp.click_registerNow()# 断言time.sleep(5)yq 用户名不符合格式要求sj self.rp.get_username_text()self.assertEqual(yq,sj)def test_register_username_04(self):用户名含特殊符号:return:self.rp.input_username(ad###)self.rp.input_email(blue_015163.com)self.rp.input_password(123456)self.rp.input_repassword(123456)self.rp.click_registerNow()# 断言time.sleep(5)yq 用户名不符合格式要求sj self.rp.get_username_text()self.assertEqual(yq,sj)def tearDown(self):# 关闭浏览器self.rp.close_browser()if __name__ __main__:unittest.main()6、maintest主运行文件 import unittest from selenium import webdriver import time from BeautifulReport import BeautifulReportdiscover unittest.defaultTestLoader.discover(./testcases/register,patternmifeng_*.py)filename report_time.strftime(%m%d%H%M) runner BeautifulReport(discover) runner.report(报告,filename,./testreport/)7、多页面交互设计 登录用例的实现涉及到登录页面和中间跳转页面 import unittest from MiFengShopPO.common.commondriver import commondriver from MiFengShopPO.pageobject.LoginPage import LoginPage from MiFengShopPO.pageobject.TiaoZhuanPage import TiaoZhuanPageclass mifeng_login(unittest.TestCase):def setUp(self):# 创建一个统一的浏览器对象self.driver commondriver().open_browser()# 创建登录的对象打开登录页面self.lp LoginPage(self.driver)self.lp.open_url(self.lp.url)def test_login_01(self):正向测试用例:return:self.lp.input_username(blue_001)self.lp.input_password(123456)self.lp.click_login()# 断言采用跳转页面的元素做断言self.tzp TiaoZhuanPage(self.driver)sj self.tzp.get_tiaozhuan_text()yq 登录成功self.assertEqual(yq,sj)def tearDown(self):self.lp.close_browser()if __name____main__:unittest.main()import unittest from MiFengShopPO.common.commondriver import commondriver from MiFengShopPO.pageobject.LoginPage import LoginPage from MiFengShopPO.pageobject.TiaoZhuanPage import TiaoZhuanPageclass mifeng_login(unittest.TestCase):def setUp(self):# 创建一个统一的浏览器对象self.driver commondriver().open_browser()# 创建登录的对象打开登录页面self.lp LoginPage(self.driver)self.lp.open_url(self.lp.url)def test_login_01(self):正向测试用例:return:self.lp.input_username(blue_001)self.lp.input_password(123456)self.lp.click_login()# 断言采用跳转页面的元素做断言self.tzp TiaoZhuanPage(self.driver)sj self.tzp.get_tiaozhuan_text()yq 登录成功self.assertEqual(yq,sj)def tearDown(self):self.lp.close_browser()if __name____main__:unittest.main()
http://www.ho-use.cn/article/10822721.html

相关文章:

  • 国家企业信息系统公示系统下载佛山网站快照优化公司
  • 软件开发招标网站wordpress 分页404
  • 好的做网站中国电商网站排名
  • 网站规划名词解释有阿里云主机管理平台如何自己做网站
  • 免费域名注册和免费建站专业团队广告语
  • 做网站的广告江津集团网站建设
  • 电信200m宽带做网站卡吗企业查询app 哪个好用
  • 网站建设衣服合肥市建设网站市场信息价
  • 中文域名网站标识辽宁自助网站建设公司
  • 知名营销网站wordpress自定义文章类型输出数量
  • 如何在国外网站做免费推广网站开发新型技术
  • 网站大全下载软件安装佛山制作网站企业
  • 西宁网络公司做网站哪家好福永电子烟网站开发
  • 金融网站建设内容微信小程序制作过程
  • 怎样做交互式网站中国建设教育协会是个什么网站
  • 溧阳做网站的哪家好aso关键词排名优化是什么
  • 微信网站公众平台单位网站建设申请
  • 装修网站怎么建设wordpress积分查看
  • 河南省住房和城乡建设门户网站营销培训师
  • 网站推广的8种方法中达世联网站建设
  • 江苏省和住房城乡建设厅网站wordpress赚钱
  • 如何通过c语言来做网站wordpress 一键分享
  • 汕头网站设计开发建筑人才网 一建港航
  • 百度站长之家工具国外大气网站欣赏
  • 雄安 网站建设小游戏网站怎么做
  • 简单的网站构建的基本流程wordpress 音乐盒
  • 用心做电影的网站关键词都有哪些
  • 玉树wap网站建设公司怎么建设像天猫的网站
  • excel表如何做网站连接深圳网站建设服务商
  • 做家装的设计公司网站cf小号自助购买网站