智能体测开Day32

智能体测开Day32 read_file 获取项目路径 解析csv 解析ini 解析excel import configparser import os.path import openpyxl def get_project_path(): # 获取父路径 path os.path.dirname(__file__) path os.path.dirname(path) return path # 解析excel文件 def read_excel(filename,sheet Sheet1): # 获取完整的文件路径 filepath os.path.join(get_project_path(), data, filename) # 加载整个表格文件 wb openpyxl.load_workbook(str(filepath)) # 获取对应工作表 wsh wb[sheet] rl [] for row in wsh: cells [] for cell in row: # 如果单元格是None存储空字符串 if not cell.value: cells.append() else: cells.append(cell.value) # 将子列表一行信息存储到大的列表中 rl.append(cells) return rl[1::] # 解析ini文件 def read_ini(filename,section,key): 解析ini文件返回一个字符串类型 :param filename: 文件名称 :param section: 节点名 :param key: 关键词 :return: value值 # 获取完整的文件路径 filepath get_project_path()\\data\\filename cp configparser.ConfigParser() cp.read(filepath,encodingutf-8) value cp.get(section,key) return value if __name__ __main__: # url read_ini(evn.ini,evn,url) # print(url) # # dbinfo read_ini(evn.ini,mysql,dbinfo) # print(dbinfo) # d eval(dbinfo) # print(type(d)) #class dict print(read_excel(data_adduser.xlsx, 添加成员的测试数据))loginpageimport time from ranzhiProject.caw.basepage import BasePage, get_Driver class LoginPage(BasePage): # 定位方式设置为属性 account idaccount pwd idpassword submit id submit qiantui link text 签退 def login(self,account,password): self.send(self.account,account) self.send(self.pwd,password) self.click(self.submit) def loginout(self): self.switch_To_Default_Content() self.click(self.qiantui) if __name__ __main__: lp LoginPage(get_Driver()) # 打开网页 lp.open(http://127.0.0.1/ranzhi/www) # 登录 lp.login(admin,123456) time.sleep(2) # 退出登录 lp.loginout() time.sleep(10)adduserpageimport time from ranzhiProject.baw.loginpage import LoginPage from ranzhiProject.caw.basepage import BasePage, get_Driver class AdduserPage(BasePage): # 属性 定位方式 houtai id s-menu-superadmin # 后台管理菜单按钮 id定位 iframe id iframe-superadmin # 后台内容嵌套的iframe框架 tianjia link text 添加成员 # 文字链接添加成员按钮 account id account # 用户名输入框 real id realname # 真实姓名输入框 genderm id genderm # 性别男单选框 genderf id genderf # 性别女单选框 dept id dept # 部门下拉选择框 role id role # 角色下拉选择框 add_password1 id password1 # 密码输入框 add_password2 id password2 # 确认密码输入框 email id email # 邮箱输入框 submit id submit # 提交保存按钮 # 保存成功 success_flag link text 禁用成员列表 # 成功校验标识 # 保存失败 accountLabel id accountLabel # 用户名为空的提示框 realnameLabel id realnameLabel # 真实姓名为空的提示框 roleLabel id roleLabel # 角色为空的提示框 password1Label id password1Label # 两次密码不同时的提示框 emailLabel id emailLabel # 邮件为空时的提示框 def adduser(self,username,realname,gender,dept_text,role_text,password1,password2,email): # 点击后台管理 self.click(self.houtai) # 切换到iframe中 self.enter_Iframe(self.iframe) # 点击添加成员 self.click(self.tianjia) # 添加用户名 self.send(self.account, username) # 添加真实姓名 self.send(self.real, realname) # 选择性别 if gender 男: self.click(self.genderm) elif gender 女: self.click(self.genderf) # 选择部门 # 下拉框创建select对象 # 根据文本选中 self.select_By_Text(self.dept, dept_text) # 选择角色 # 下拉框创建select对象 # 根据value选中 self.select_By_Text(self.role, role_text) # 添加密码 self.send(self.add_password1, password1) # 重复密码 self.send(self.add_password2, password2) # 添加邮箱 self.send(self.email, email) # 点击保存 self.click(self.submit) def check_fail(self,expectinfo): # 用户名为空 if 用户名 in expectinfo: real self.locator_element(self.accountLabel).text # 真实姓名为空 elif 真实姓名 in expectinfo: real self.locator_element(self.realnameLabel).text # 角色为空 elif 角色 in expectinfo: real self.locator_element(self.roleLabel).text # 两次密码不同时 elif 密码 in expectinfo: real self.locator_element(self.password1Label).text # 邮箱为空 elif 邮箱 in expectinfo: real self.locator_element(self.emailLabel).text print(freal{real},expect{expectinfo},{real expectinfo}) # 判断是否执行成功 assert real expectinfo def check_success(self): # 获取保存成功后的页面的一个元素 元素返回不为空代表测试通过 l self.locator_element(self.success_flag) if l: print(保存成功) else: print(保存失败) assert l ! None if __name__ __main__: d get_Driver() lp LoginPage(d) # 打开网页 lp.open(http://127.0.0.1/ranzhi/www) # 登录 lp.login(admin,123456) time.sleep(1) ap AdduserPage(d) ap.adduser(548,五大宝,男,/市场部,市场,123456,123456,jak66.com) # ap.check_success() ap.check_fail(用户名已经有548这条记录了。)conftestimport time import pytest from ranzhiProject.baw.loginpage import LoginPage from ranzhiProject.caw.basepage import get_Driver from ranzhiProject.caw.read_file import read_ini pytest.fixture(scopesession) def myDriver(): return get_Driver() pytest.fixture(scopefunction) def login(myDriver): # 获取url user pwd url read_ini(evn.ini,evn,url) user read_ini(evn.ini,evn,user) pwd read_ini(evn.ini,evn,pwd) # 前置登录 lp LoginPage(myDriver) lp.open(url) lp.login(user,pwd) yield myDriver # 后置退出登录 lp.loginout() time.sleep(1)test_adduserimport pytest from ranzhiProject.baw.adduserpage import AdduserPage from ranzhiProject.caw.read_file import read_excel # 数据驱动获取数据 pytest.fixture(paramsread_excel(data_adduser.xlsx,添加成员的测试数据)[0:10:]) def get_userdata(request): return request.param def test_adduser(login,get_userdata): driver login ap AdduserPage(driver) print(f测试用例{get_userdata[0]}) # 添加成员 ap.adduser(get_userdata[1], get_userdata[2], get_userdata[3], get_userdata[4], get_userdata[5], get_userdata[6], get_userdata[7], get_userdata[8]) # 根据预期内容判断是校验成功还是失败 if 成功 in get_userdata[9]: ap.check_success() else: ap.check_fail(get_userdata[9])文件层级关系