霍格沃兹测试开发学社 ceshiren.com
autonumber
actor 测试工程师 as tester
participant 系统 as sys
tester -> sys: 测试工程师在系统页面做点击输入等操作
sys -> sys: 系统运行产生响应
sys -> tester: 测试工程师拿到实际结果与预期结果对比
autonumber
actor 测试工程师 as tester
participant Python as python
participant Selenium as web
participant 被测系统 as sys
tester -> python: 使用Python编写自动化测试脚本
python -> web: 调用selenium执行自动化测试脚本
web -> sys: 模拟点击、输入等操作,并获取自动化运行的响应结果
sys -> python: Python拿到系统的响应结果,并与提前设定好的预期结果进行对比
Selenium is a suite of tools to automate web browsers across many platforms. runs in many browsers and operating systems can be controlled by many programming languages and testing frameworks
一个添加成员的步骤:
def test_add_member(self):
self.driver.get(“https://work.weixin.qq.com/wework_admin/frame#index")
element_locator = (By.LINK_TEXT, “添加成员")
WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(element_locator))
self.driver.find_element(*element_locator).click()
self.driver.find_element(By.NAME, 'username').send_keys("abc")
self.driver.find_element(By.NAME, 'english_name').send_keys("abc")
self.driver.find_element(By.NAME, "acctid").send_keys("abc")
self.driver.find_element(By.CSS_SELECTOR, '.ww_telInput_zipCode_input input').click()
self.driver.find_element(By.CSS_SELECTOR, 'li[data-value="853"]').click()
assert...
从首页->通讯录->添加成员应该怎么改
对应的自动化测试代码
def test_add_member(self):
self.driver.get(“https://work.weixin.qq.com/wework_admin/frame#index")
element_locator = (By.LINK_TEXT, “添加成员")
WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(element_locator))
self.driver.find_element(*element_locator).click()
self.driver.find_element(By.NAME, 'username').send_keys("abc")
self.driver.find_element(By.NAME, 'english_name').send_keys("abc")
self.driver.find_element(By.NAME, "acctid").send_keys("abc")
self.driver.find_element(By.CSS_SELECTOR, '.ww_telInput_zipCode_input input').click()
self.driver.find_element(By.CSS_SELECTOR, 'li[data-value="853"]').click()
assert...
一定要活学活用,不要死搬硬套
@startuml
autonumber
participant 企业微信主页面 as main
participant 通讯录页面 as contact
participant 添加成员页面 as add_member
main -> contact: 点击通讯录
main -> add_member: 点击添加成员
contact -> add_member: 点击添加成员
add_member -> contact: 填写成员资料, 点击保存
contact -> contact: 获取成员列表断言
@enduml
@startmindmap
* HowToDo
** 梳理测试用例
** 构造PO模型
*** 构造页面相关类和方法
*** 实现暂时实际为空
** 编写测试用例
*** 根据业务逻辑编写
*** 链式调用
** 填充具体实现
*** Driver初始化
*** BasePage封装
** 优化用例
*** 封装样板代码
*** 提取页面元素
*** 添加起始页的url
@endmindmap
问题:
解决方案:
@startuml
class BasePage{
_url = null
finds()
find()
}
class MainPage{
str element1
goto_contact()
goto_add_member()
}
class ContactPage{
str element1
~ goto_add_member()
~ get_list()
}
class AddMemberPage{
str element1
~ add_member()
~ add_member_fail()
}
BasePage<|-- MainPage: 继承
BasePage<|-- ContactPage: 继承
BasePage<|-- AddMemberPage: 继承
@enduml
问题:
解决方案:每个Page子类添加_base_url变量。确保即使用例从子类页面起始,也可以正常使用。