v4_1问题
- 代码运行效率较低:
- prepare_and_exit包含所有前置和后置步骤,每组测试数据都从重新启动浏览器开始到关闭浏览器结束。。
- 思考:
- 是否可以省略每组数据测试时的重新启动浏览器、重新登录、以及最后的退出登录和关闭浏览器步骤?
拆分fixture
- 拆分为三个fixture,区分作用域
多个fixture调用关系图
- 三个fixture和测试方法的调用关系
- test_后台_双创_基础设置_赛区管理_添加赛区_case_v4_2.py
- yield前启动浏览器,yield后是关闭浏览器退出驱动程序
@pytest.fixture(scope='session')login_and_logout
def prepare_and_exit():
driver = webdriver.Firefox()
driver.implicitly_wait(15)
driver.get("http://192.168.58.134:8080/integration/manage")
yield driver
sleep(2)
driver.quit()
- yield前登录,yield后退出操作
@pytest.fixture(scope='class')to_division_manager
def login_and_logout(prepare_and_exit):
driver = prepare_and_exit
sleep(2)
driver.find_element(By.ID, "userName").clear()
driver.find_element(By.ID, "userName").send_keys("root")
driver.find_element(By.ID, "password").clear()
driver.find_element(By.ID, "password").send_keys("12345678")
driver.find_element(By.XPATH, "//span[text()='登录']").click()
sleep(1)
yield driver
driver.switch_to.default_content()
driver.find_element(By.CLASS_NAME, "退出").click()
- yield前进入赛区管理、yield回到主网页
@pytest.fixture(scope='class', autouse=True)测试用例实现脚本
def to_division_manager(login_and_logout):
driver = login_and_logout
driver.find_element(By.ID, "213").click() # 基础设置
WebDriverWait(driver, 20).until(
expected_conditions.presence_of_element_located((By.XPATH, "//div[@id='213']/img[@class='open']")))
driver.find_element(By.ID, "214").click() # 赛区管理
WebDriverWait(driver, 20).until(
expected_conditions.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@data-itemid='213']")))
WebDriverWait(driver, 20).until_not(expected_conditions.presence_of_element_located((By.ID, "Loading")))
yield driver
driver.switch_to.default_content()
- 测试用例实现的测试方法引用to_division_manager
def test_add_division(self,to_division_manager,division_name,message):改造判断元素出现的方法
driver = to_division_manager
……
- 因为driver不是当前类的属性了,所以需要传入driver参数
# 判断元素是否出现运行调试第四版第二子版本
def is_element_present(self,driver,how,what):
try:
driver.find_element(how,what)
except NoSuchElementException:
return False
return True
- 运行,查看结果
作者:暄总-tester