- 测试重点并不是登录功能,比较合适的做法是在执行用例前系统应该处于打开浏览器、登录的状态
1 from time import sleep
2 from lib.webui import *
3
4
5 class UI_0101:
6 name = '检查操作菜单 UI_0101'
7
8 # 初始化方法
9 def setup(self):
10 open_browser()
11 mgr_login()
12
13 # 清除方法
14 def teardown(self):
15 wd = GSTORE['wd']
16 wd.quit()
17
18 def teststeps(self):
19
20 STEP(1, '获取左边菜单栏')
21 wd = GSTORE['wd']
22 eles = wd.find_elements(By.CSS_SELECTOR, '.sidebar-menu span')
23 menuText = [ele.text for ele in eles]
24 INFO(menuText)
25 STEP(2, '检查左边菜单栏')
26 CHECK_POINT('检查菜单是否正确', ['客户', '药品', '订单'] == menuText[:3])
27
28
29 class UI_0102:
30 name = '添加客户 UI_0102'
31
32 # 初始化方法
33 def setup(self):
34 open_browser()
35 mgr_login()
36
37 # 清除方法
38 def teardown(self):
39 wd = GSTORE['wd']
40 wd.quit()
41
42 def teststeps(self):
43
44 STEP(1, '点击左侧客户菜单')
45 wd = GSTORE['wd']
46 # 先找到上层节点,缩小查找范围
47 sidebarMenu = wd.find_element(By.CLASS_NAME, 'sidebar-menu')
48
49 # 再找到内部元素
50 elements = sidebarMenu.find_elements(By.TAG_NAME, 'span')
51
52 # 第一个span对应的菜单是 客户,点击它
53 elements[0].click()
54
55 STEP(2, '添加客户')
56
57 # 点击添加客户按钮
58 wd.find_element(By.CLASS_NAME, 'glyphicon-plus').click()
59
60 # form-contorl 对应3个输入框
61 inputs = wd.find_elements(By.CSS_SELECTOR, '.add-one-area .form-control')
62
63 # 输入客户姓名
64 inputs[0].send_keys('南京中医院')
65 # 输入联系电话
66 inputs[1].send_keys('2551867858')
67 # 输入客户描述
68 inputs[2].send_keys('江苏省-南京市-秦淮区-汉中路-16栋504')
69
70 # 第1个 btn-xs 就是创建按钮, 点击创建按钮
71 wd.find_element(By.CSS_SELECTOR, '.add-one-area .btn-xs').click()
72
73 # 等待1秒
74 sleep(1)
75
76 STEP(3, '检查添加信息')
77
78 # 找到 列表最上面的一栏
79 item = wd.find_elements(By.CLASS_NAME, 'search-result-item')[0]
80
81 fields = item.find_elements(By.TAG_NAME, 'span')[:6]
82
83 texts = [field.text for field in fields]
84 INFO(texts)
85
86 # 预期内容为
87 expected = [
88 '客户名:',
89 '南京中医院',
90 '联系电话:',
91 '2551867858',
92 '地址:',
93 '江苏省-南京市-秦淮区-汉中路-16栋504'
94 ]
95
96 CHECK_POINT('客户信息和添加内容一致 ',
97 texts == expected)
- 执行过程跟之前没有差别,还是会打开两次浏览器分别执行用例。
- 测试报告中会有用例初始化、用例清除的体现
- 单个用例的初始化是在用例对应的类中添加setup和teardown方法
- hytest执行用例时,先执行setup,再执行teststeps,最后执行teardown
- 如果setup初始化失败(有异常),就不会执行后续的两个操作
- 如果teststeps执行失败,仍然会执行teardown,确保环境被还原,也就是只要初始化了,肯定要还原