5个文件已添加
5个文件已修改
1 文件已重命名
1个文件已删除
New file |
| | |
| | | { |
| | | "login": { |
| | | "url": "http://161.117.57.194/login?lang=zh_CN", |
| | | "username": "admin", |
| | | "password": "ots@2021!!", |
| | | "code": "ots" |
| | | }, |
| | | |
| | | "MAQ": { |
| | | "menu": "测试包管理/测试包列表", |
| | | "add": { |
| | | "company": "TAI测试", |
| | | "type": "人格测试包", |
| | | "product": "MAQV2", |
| | | "hrEmail": "2077506045@qq.com", |
| | | "invalid": "2024-01-01 00:00:00", |
| | | "memberLang": "中文", |
| | | "hrReportLang": "中文", |
| | | "reportTemplate": "MAQV2-Complete-Chinese", |
| | | "memberReportLang": "中文" |
| | | }, |
| | | "info": { |
| | | "position":"职员", |
| | | "dept": "人事部" |
| | | } |
| | | }, |
| | | "JAQ": { |
| | | "menu": "测试包管理/测试包列表", |
| | | "add": { |
| | | "company": "TAI测试", |
| | | "type": "工作分析包", |
| | | "product": "JAQ", |
| | | "hrEmail": "2077506045@qq.com", |
| | | "invalid": "2024-01-01 00:00:00", |
| | | "memberLang": "中文", |
| | | "hrReportLang": "中文", |
| | | "reportTemplate": "JAQ-Complete-Chinese", |
| | | "memberReportLang": "中文", |
| | | "position": "主管", |
| | | "professionalCategory": "管理", |
| | | "superiorPosition": "总经理" |
| | | |
| | | }, |
| | | "info": { |
| | | "position":"职员", |
| | | "dept": "人事部" |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | from selenium.webdriver.common.by import By |
| | | |
| | | |
| | | class JAQAnswerElements: |
| | | # 开始测试按钮 |
| | | start_btn = (By.XPATH, "//button/span[text()='开始测试']/..") |
| | | # 题目选项-a |
| | | options_a = (By.XPATH, "//div[@class='el-card__body']/div[1]//span[@class='q-item-span-content']") |
| | | # 题目选项-b |
| | | options_b = (By.XPATH, "//div[@class='el-card__body']/div[2]//span[@class='q-item-span-content']") |
| | | # 禁用的选项 |
| | | disabled = (By.XPATH, "//label[@aria-disabled='true']") |
| | | # 继续测试按钮 |
| | | continue_testing_btn = (By.XPATH, "//button/span[text()='继续测试']") |
| | | # 提交按钮 |
| | | submit_btn = (By.XPATH, "//button/span[contains(text(),'提交')]/..") |
| | | # 上传成功标题 |
| | | upload_success_title = (By.XPATH, "//main/h2[contains(text(), '数据已经成功地上传至服务器')]") |
| | | |
| | | # 加载框文字 |
| | | loading_text = (By.XPATH, "//div[@class='el-loading-spinner']/p") |
| | | |
| | | # 标题文字 |
| | | title = (By.XPATH, "//h1[text()='JAQ']") |
| | | |
File was renamed from elements/answer_elements.py |
| | |
| | | from selenium.webdriver.common.by import By |
| | | |
| | | |
| | | class AnswerElements: |
| | | class MAQAnswerElements: |
| | | # 开始测试按钮 |
| | | start_btn = (By.XPATH, "//button") |
| | | # 题目选项 |
| | | options = (By.XPATH, "//span[@class='q-item-span-content']") |
| | | # 禁用的选项 |
| | |
| | | # 继续测试按钮 |
| | | continue_testing_btn = (By.XPATH, "//button/span[text()='继续测试']") |
| | | # 提交按钮 |
| | | submit_btn = (By.XPATH, "//button/span[contains(text(),'提交')]") |
| | | submit_btn = (By.XPATH, "//button/span[contains(text(),'提交')]/..") |
| | | # 上传成功标题 |
| | | upload_success_title = (By.XPATH, "//main/h2[contains(text(), '数据已经成功地上传至服务器')]") |
| | | |
| | |
| | | |
| | | |
| | | def run_testcases(): |
| | | pytest.main(['-vs', '--html=report/report.html', 'testcase/']) |
| | | pytest.main(['-vs', '--html=report/report.html', 'testcase']) |
| | | |
| | | |
| | | if __name__ == '__main__': |
New file |
| | |
| | | import random |
| | | |
| | | from base.base_page import BasePage |
| | | from elements.jaq_answer_elements import JAQAnswerElements as Answer |
| | | from selenium.common.exceptions import * |
| | | |
| | | import time |
| | | |
| | | |
| | | class JAQAnswerPage(BasePage): |
| | | """ |
| | | 答题页面 |
| | | """ |
| | | loading_count = 0 |
| | | |
| | | def answer_MAQ(self): |
| | | # 暂停3秒 |
| | | time.sleep(3) |
| | | while True: |
| | | # 标题不存在直接返回False |
| | | if not self.title_is_display(): |
| | | return False |
| | | |
| | | try: |
| | | # 获取到所有a选项 |
| | | options_a = self.get_elements(Answer.options_a) |
| | | if len(options_a) < 5: |
| | | continue |
| | | number_a = random.randint(0, 4) |
| | | options_a[number_a].click() |
| | | |
| | | # 获取到所有b选项 |
| | | options_b = self.get_elements(Answer.options_b) |
| | | if len(options_b) < 4: |
| | | continue |
| | | number_b = random.randint(0, 3) |
| | | options_b[number_b].click() |
| | | except: |
| | | pass |
| | | |
| | | # 提交按钮存在则点击 |
| | | if self.submit_btn_is_display(): |
| | | self.click(Answer.submit_btn) |
| | | # 数据是否上传完成 |
| | | time.sleep(15) |
| | | if self.upload_is_success(): |
| | | return True |
| | | return False |
| | | |
| | | def upload_is_success(self): |
| | | """ |
| | | 判断数据是否上传完成 |
| | | :return: |
| | | """ |
| | | try: |
| | | self.get_element_wait(Answer.upload_success_title) |
| | | return True |
| | | except TimeoutException: |
| | | return False |
| | | |
| | | def submit_btn_is_display(self): |
| | | """ |
| | | 判断提交按钮是否存在 |
| | | :return: |
| | | """ |
| | | try: |
| | | button = self.get_element(Answer.submit_btn) |
| | | if button.is_enabled(): |
| | | return True |
| | | else: |
| | | return False |
| | | except NoSuchElementException: |
| | | return False |
| | | |
| | | def continue_btn_is_display(self): |
| | | """ |
| | | 判断继续测试按钮是否出现 |
| | | :return: bool |
| | | """ |
| | | try: |
| | | # 点击继续测试按钮 |
| | | button = self.get_element(Answer.continue_testing_btn) |
| | | if button.is_enabled(): |
| | | return True |
| | | else: |
| | | return False |
| | | except NoSuchElementException: |
| | | return False |
| | | |
| | | def title_is_display(self): |
| | | """ |
| | | 判断标题是否出现 |
| | | :return: bool |
| | | """ |
| | | try: |
| | | # 获取标题 |
| | | self.get_element_wait(Answer.title) |
| | | return True |
| | | except TimeoutException: |
| | | return False |
| | | |
| | | def loadin_text(self): |
| | | """ |
| | | 判断加载框加载,如果加载超过10秒直接退出当前测试 |
| | | :return: |
| | | """ |
| | | i = 0 |
| | | while i < 10: |
| | | try: |
| | | self.get_element(Answer.loading_text) |
| | | i += 1 |
| | | time.sleep(1) |
| | | except: |
| | | return False |
| | | else: |
| | | return True |
| | | |
| | | def start_btn(self): |
| | | """ |
| | | 开始测试按钮 |
| | | :return: |
| | | """ |
| | | self.click_wait(Answer.start_btn) |
New file |
| | |
| | | import random |
| | | |
| | | from base.base_page import BasePage |
| | | from elements.maq_answer_elements import MAQAnswerElements as Answer |
| | | from selenium.common.exceptions import * |
| | | |
| | | import time |
| | | |
| | | |
| | | class MAQAnswerPage(BasePage): |
| | | """ |
| | | 答题页面 |
| | | """ |
| | | loading_count = 0 |
| | | |
| | | def answer_MAQ(self): |
| | | # 暂停3秒 |
| | | time.sleep(3) |
| | | while True: |
| | | # 继续测试按钮出现则点击 |
| | | if self.continue_btn_is_display(): |
| | | self.click(Answer.continue_testing_btn) |
| | | |
| | | # 标题不存在直接返回False |
| | | if not self.title_is_display(): |
| | | return False |
| | | |
| | | try: |
| | | # 获取到所有选项 |
| | | options = self.get_elements(Answer.options) |
| | | if len(options) < 6: |
| | | continue |
| | | number = random.randint(0, 5) |
| | | if options[number].is_enabled(): |
| | | options[number].click() |
| | | except: |
| | | pass |
| | | |
| | | # 提交按钮存在则点击 |
| | | if self.submit_btn_is_display(): |
| | | self.click(Answer.submit_btn) |
| | | # 数据是否上传完成 |
| | | time.sleep(15) |
| | | if self.upload_is_success(): |
| | | return True |
| | | return False |
| | | |
| | | def upload_is_success(self): |
| | | """ |
| | | 判断数据是否上传完成 |
| | | :return: |
| | | """ |
| | | try: |
| | | self.get_element_wait(Answer.upload_success_title) |
| | | return True |
| | | except TimeoutException: |
| | | return False |
| | | |
| | | def submit_btn_is_display(self): |
| | | """ |
| | | 判断提交按钮是否存在 |
| | | :return: |
| | | """ |
| | | try: |
| | | button = self.get_element(Answer.submit_btn) |
| | | if button.is_enabled(): |
| | | return True |
| | | else: |
| | | return False |
| | | except NoSuchElementException: |
| | | return False |
| | | |
| | | def continue_btn_is_display(self): |
| | | """ |
| | | 判断继续测试按钮是否出现 |
| | | :return: bool |
| | | """ |
| | | try: |
| | | # 点击继续测试按钮 |
| | | button = self.get_element(Answer.continue_testing_btn) |
| | | if button.is_enabled(): |
| | | return True |
| | | else: |
| | | return False |
| | | except NoSuchElementException: |
| | | return False |
| | | |
| | | def title_is_display(self): |
| | | """ |
| | | 判断标题是否出现 |
| | | :return: bool |
| | | """ |
| | | try: |
| | | # 获取标题 |
| | | self.get_element_wait(Answer.title) |
| | | return True |
| | | except TimeoutException: |
| | | return False |
| | | |
| | | def loadin_text(self): |
| | | """ |
| | | 判断加载框加载,如果加载超过10秒直接退出当前测试 |
| | | :return: |
| | | """ |
| | | i = 0 |
| | | while i < 10: |
| | | try: |
| | | self.get_element(Answer.loading_text) |
| | | i += 1 |
| | | time.sleep(1) |
| | | except: |
| | | return False |
| | | else: |
| | | return True |
| | | |
| | | def start_btn(self): |
| | | """ |
| | | 开始测试按钮 |
| | | :return: |
| | | """ |
| | | self.click_wait(Answer.start_btn) |
| | |
| | | 点击创建按钮 |
| | | :return: |
| | | """ |
| | | self.click(PackageList.create_btn) |
| | | self.click_wait(PackageList.create_btn) |
| | | # 切换到add窗口的iframe |
| | | self.switch_iframe(PackageList.add_iframe) |
| | | |
| | |
| | | :return: |
| | | """ |
| | | # 点击删除按钮 |
| | | self.click(PackageList.delete_btn) |
| | | self.click_wait(PackageList.delete_btn) |
| | | # 点击确认按钮 |
| | | self.click_wait(PackageList.delete_confirm_btn) |
| | | |
| | |
| | | :param testPackageName: 测试包名称 |
| | | :return: |
| | | """ |
| | | self.send_text(testPackageName, PackageList.add_testPackageName_input) |
| | | self.send_text_wait(testPackageName, PackageList.add_testPackageName_input) |
| | | |
| | | def reportCompanyName_input(self, reportCompanyName): |
| | | """ |
| | |
| | | :param reportCompanyName: 报告企业名称 |
| | | :return: |
| | | """ |
| | | self.send_text(reportCompanyName, PackageList.add_reportCompanyName_input) |
| | | self.send_text_wait(reportCompanyName, PackageList.add_reportCompanyName_input) |
| | | |
| | | def testPackageType_select(self, testPackageType): |
| | | """ |
| | |
| | | :return: |
| | | """ |
| | | # 点击下拉框 |
| | | self.click(PackageList.add_testPackageType_select) |
| | | self.click_wait(PackageList.add_testPackageType_select) |
| | | # 获取所有选项 |
| | | options = self.get_elements(PackageList.add_testPackageType_option) |
| | | options = self.get_elements_wait(PackageList.add_testPackageType_option) |
| | | # 判断选项是否与传入的选项相等 |
| | | for opt in options: |
| | | if opt.text == testPackageType: |
| | |
| | | :return: |
| | | """ |
| | | # 点击查询按钮 |
| | | self.click(PackageList.add_prodTree_btn) |
| | | self.click_wait(PackageList.add_prodTree_btn) |
| | | # 切换到prodTree的iframe |
| | | self.switch_iframe_wait(PackageList.prodTree_iframe) |
| | | time.sleep(2) |
| | | # 获取所有选项 |
| | | options = self.get_elements(PackageList.prodTree_option) |
| | | options = self.get_elements_wait(PackageList.prodTree_option) |
| | | # 判断选项是否与传入选项相等 |
| | | for opt in options: |
| | | if opt.text == prodName: |
| | |
| | | # 切换到上一层的iframe |
| | | self.switch_parent_iframe() |
| | | # 点击确认按钮 |
| | | self.click(PackageList.prodTree_confirm_btn) |
| | | self.click_wait(PackageList.prodTree_confirm_btn) |
| | | |
| | | def hrReportEmail_input(self, hr_email): |
| | | """ |
| | |
| | | :param hr_email: |
| | | :return: |
| | | """ |
| | | self.send_text(hr_email, PackageList.add_hrEmail_input) |
| | | self.send_text_wait(hr_email, PackageList.add_hrEmail_input) |
| | | |
| | | def invalidTime_input(self, invalid_time): |
| | | """ |
| | |
| | | :param invalid_time: |
| | | :return: |
| | | """ |
| | | self.send_text(invalid_time, PackageList.add_invalidTime) |
| | | self.click(PackageList.add_invalidTime) |
| | | self.send_text_wait(invalid_time, PackageList.add_invalidTime) |
| | | self.click_wait(PackageList.add_invalidTime) |
| | | |
| | | def testTemplateLangType_select(self, text): |
| | | """ |
| | |
| | | # 分割text |
| | | lang_types = text.split(",") |
| | | # 点击下拉框 |
| | | self.click(PackageList.add_templateLangType_select) |
| | | self.click_wait(PackageList.add_templateLangType_select) |
| | | # 获取所有选项 |
| | | options = self.get_elements(PackageList.add_templateLangType_option) |
| | | options = self.get_elements_wait(PackageList.add_templateLangType_option) |
| | | # 判断选项是否与传入的选项相等 |
| | | for opt in options: |
| | | for lang_type in lang_types: |
| | |
| | | # 分割text |
| | | lang_types = text.split(",") |
| | | # 点击下拉框 |
| | | self.click(PackageList.add_hrTemplateLangType_select) |
| | | self.click_wait(PackageList.add_hrTemplateLangType_select) |
| | | # 获取所有选项 |
| | | options = self.get_elements(PackageList.add_hrTemplateLangType_option) |
| | | options = self.get_elements_wait(PackageList.add_hrTemplateLangType_option) |
| | | # 判断选项是否与传入的选项相等 |
| | | for opt in options: |
| | | for lang_type in lang_types: |
| | |
| | | # 分割text |
| | | templates = text.split(",") |
| | | # 点击下拉框 |
| | | self.click(PackageList.add_reportTemplateId_select) |
| | | self.click_wait(PackageList.add_reportTemplateId_select) |
| | | # 获取所有选项 |
| | | options = self.get_elements(PackageList.add_reportTemplateId_option) |
| | | options = self.get_elements_wait(PackageList.add_reportTemplateId_option) |
| | | # 判断选项是否与传入的选项相等 |
| | | for opt in options: |
| | | for template in templates: |
| | |
| | | opt.click() |
| | | break |
| | | # 再次点击下拉框 |
| | | self.click(PackageList.add_reportTemplateId_select) |
| | | self.click_wait(PackageList.add_reportTemplateId_select) |
| | | |
| | | def position_input(self, text): |
| | | """ |
| | |
| | | :param text: |
| | | :return: |
| | | """ |
| | | self.send_text(text, PackageList.add_position_input) |
| | | self.send_text_wait(text, PackageList.add_position_input) |
| | | |
| | | def professionalCategory_input(self, text): |
| | | """ |
| | |
| | | :param text: |
| | | :return: |
| | | """ |
| | | self.send_text(text, PackageList.add_professionalCategory_input) |
| | | self.send_text_wait(text, PackageList.add_professionalCategory_input) |
| | | |
| | | def superiorPosition_input(self, text): |
| | | """ |
| | |
| | | :param text: |
| | | :return: |
| | | """ |
| | | self.send_text(text, PackageList.add_superiorPosition_input) |
| | | self.send_text_wait(text, PackageList.add_superiorPosition_input) |
| | | |
| | | def autoSendReport_checkbox(self): |
| | | """ |
| | | 点击测试者接收报告 |
| | | :return: |
| | | """ |
| | | self.click(PackageList.add_autoSendReport_checkbox) |
| | | self.click_wait(PackageList.add_autoSendReport_checkbox) |
| | | |
| | | def memberReportLangType_select(self, text): |
| | | """ |
| | |
| | | # 分割text |
| | | lang_types = text.split(",") |
| | | # 点击下拉框 |
| | | self.click(PackageList.add_memberTemplateLangType_select) |
| | | self.click_wait(PackageList.add_memberTemplateLangType_select) |
| | | # 获取所有选项 |
| | | options = self.get_elements(PackageList.add_memberTemplateLangType_option) |
| | | options = self.get_elements_wait(PackageList.add_memberTemplateLangType_option) |
| | | # 判断选项是否与传入的选项相等 |
| | | for opt in options: |
| | | for lang_type in lang_types: |
| | |
| | | """ |
| | | # 回到上一层iframe |
| | | self.switch_parent_iframe() |
| | | self.click(PackageList.add_confirm_btn) |
| | | self.click_wait(PackageList.add_confirm_btn) |
| | | |
| | | def is_create_success(self, packageName): |
| | | """ |
| | |
| | | :param packageName: 测试包名称 |
| | | :return: bool |
| | | """ |
| | | names = self.get_elements(PackageList.table_packageName_a) |
| | | names = self.get_elements_wait(PackageList.table_packageName_a) |
| | | for name in names: |
| | | if name.text == packageName: |
| | | return True |
| | |
| | | :return: |
| | | """ |
| | | # 获取到table的所有tr |
| | | table_trs = self.get_elements(PackageList.table_package_tr) |
| | | table_trs = self.get_elements_wait(PackageList.table_package_tr) |
| | | for tr in table_trs: |
| | | # 测试包名称在tr中的定位 |
| | | package_name_loc = (By.XPATH, "td[2]/a") |
| | |
| | | 点击生成分享链接按钮 |
| | | :return: |
| | | """ |
| | | self.click(PackageList.share_1_btn) |
| | | self.click_wait(PackageList.share_1_btn) |
| | | |
| | | def get_share_url(self): |
| | | """ |
| | |
| | | url = self.get_input_value_js(PackageList.share_url_input) |
| | | # 退回上一层iframe |
| | | self.switch_parent_iframe() |
| | | time.sleep(1) |
| | | # 点击关闭按钮 |
| | | self.click(PackageList.share_cancel_btn) |
| | | self.click_wait(PackageList.share_cancel_btn) |
| | | time.sleep(1) |
| | | return url |
| | | |
| | | |
| | | def selector(self, click_loc, options_loc, text): |
| | | """ |
| | |
| | | :return: |
| | | """ |
| | | # 点击下拉框 |
| | | self.click(click_loc) |
| | | self.click_wait(click_loc) |
| | | # 获取所有选项 |
| | | options = self.get_elements(options_loc) |
| | | options = self.get_elements_wait(options_loc) |
| | | # 判断选项是否与传入的选项相等 |
| | | for opt in options: |
| | | if opt.text == text: |
| | |
| | | } |
| | | </script> |
| | | <h1>report.html</h1> |
| | | <p>Report generated on 14-Jul-2023 at 17:57:30 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p> |
| | | <p>Report generated on 17-Jul-2023 at 16:13:07 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p> |
| | | <h2>Summary</h2> |
| | | <p>0 tests ran in 0.01 seconds. </p> |
| | | <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="passed">0 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="failed">0 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span> |
| | | <p>10 tests ran in 388.23 seconds. </p> |
| | | <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="passed">10 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="failed">0 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span> |
| | | <h2>Results</h2> |
| | | <table id="results-table"> |
| | | <thead id="results-table-head"> |
| | |
| | | <th class="sortable" col="duration">Duration</th> |
| | | <th class="sortable links" col="links">Links</th></tr> |
| | | <tr hidden="true" id="not-found-message"> |
| | | <th colspan="4">No results found. Try to check the filters</th></tr></thead></table></body></html> |
| | | <th colspan="4">No results found. Try to check the filters</th></tr></thead> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_jaq.py::TestJAQ::test_login[login]</td> |
| | | <td class="col-duration">4.92</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_jaq.py::TestJAQ::test_create_package[JAQ]</td> |
| | | <td class="col-duration">14.10</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_jaq.py::TestJAQ::test_open_url[JAQ]</td> |
| | | <td class="col-duration">14.05</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_jaq.py::TestJAQ::test_answer</td> |
| | | <td class="col-duration">93.40</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_jaq.py::TestJAQ::test_delete_package</td> |
| | | <td class="col-duration">7.31</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_maq.py::TestMAQ::test_login[login]</td> |
| | | <td class="col-duration">4.82</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_maq.py::TestMAQ::test_create_package[MAQ]</td> |
| | | <td class="col-duration">14.45</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_maq.py::TestMAQ::test_open_url[MAQ]</td> |
| | | <td class="col-duration">13.81</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_maq.py::TestMAQ::test_answer</td> |
| | | <td class="col-duration">213.81</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody> |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_maq.py::TestMAQ::test_delete_package</td> |
| | | <td class="col-duration">7.38</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | | <div class="empty log">No log output captured.</div></td></tr></tbody></table></body></html> |
New file |
| | |
| | | """ |
| | | 测试数据共享文件 |
| | | """ |
| | | |
| | | import pytest |
| | | import json |
| | | import os |
| | | |
| | | |
| | | @pytest.fixture |
| | | def data_read(request) -> dict: |
| | | """ |
| | | 读取测试使用的数据 |
| | | :param request: 接收传递的参数 |
| | | :return: 字典 |
| | | """ |
| | | # 获取当前项目根路径 |
| | | root_path = os.getcwd() |
| | | # 获取到要获取数据的键 |
| | | key = request.param |
| | | # 读取数据 |
| | | with open(root_path + r"\data\test_data.json", "r", encoding="utf-8") as f: |
| | | values = json.load(f) |
| | | return values[key] |
| | |
| | | from po.home_page import HomePage |
| | | from po.test_package_list_page import TestPackageListPage |
| | | from po.share_add_page import ShareAddPage |
| | | from po.answer_page import AnswerPage |
| | | from po.jaq_answer_page import JAQAnswerPage |
| | | from comm.my_random import * |
| | | |
| | | |
| | | class TestJAQ: |
| | | |
| | | driver = None |
| | | test_package_name = "MAQ自动测试包-20230711151825" |
| | | test_package_name = None |
| | | |
| | | def test_login(self): |
| | | @pytest.mark.parametrize('data_read', ["login"], indirect=True) |
| | | def test_login(self, data_read: dict): |
| | | """ |
| | | 打开页面并进行登录测试 |
| | | :return: |
| | |
| | | login_page = LoginPage(driver) |
| | | try: |
| | | # 打开链接 |
| | | driver.get("http://161.117.57.194/login?lang=zh_CN") |
| | | driver.get(data_read["url"]) |
| | | except: |
| | | # 链接打开出现异常说明链接无法访问,捕获异常但不做处理 |
| | | pass |
| | |
| | | except: |
| | | break |
| | | |
| | | login_page.login("admin", "ots@2021!!", "ots") |
| | | login_page.login(data_read["username"], data_read["password"], data_read["code"]) |
| | | time.sleep(2) |
| | | assert login_page.is_login_success() |
| | | |
| | | def test_create_package(self): |
| | | @pytest.mark.parametrize('data_read', ["JAQ"], indirect=True) |
| | | def test_create_package(self, data_read: dict): |
| | | """ |
| | | 创建测试包 |
| | | :return: |
| | |
| | | # 创建home页面的对象 |
| | | home_page = HomePage(driver) |
| | | # 点击左侧菜单进入页面 |
| | | home_page.menu_select("测试包管理/测试包列表") |
| | | |
| | | home_page.menu_select(data_read["menu"]) |
| | | # 创建测试包列表页面的对象 |
| | | test_package_list = TestPackageListPage(driver) |
| | | # 点击创建按钮 |
| | |
| | | test_package_name = "JAQ自动测试包-" + time_str |
| | | # 设置测试包名称为类变量 |
| | | TestJAQ.test_package_name = test_package_name |
| | | # 报告企业名称 |
| | | report_company_name = "TAI测试" |
| | | # 测试包类型 |
| | | test_package_type = "工作分析包" |
| | | # 产品包 |
| | | prod_name = "JAQ" |
| | | # HR邮箱 |
| | | hr_email = "2077506045@qq.com" |
| | | # 有效期 |
| | | invalid_time = "2024-01-01 00:00:00" |
| | | # 测试者邀请邮件语言类型 |
| | | test_email_lang_type = "中文" |
| | | # hr报告邮件语言类型 |
| | | hr_report_email_lang_type = "中文" |
| | | # 报告模板 |
| | | report_template = "JAQ-Complete-Chinese" |
| | | # 要评价的岗位 |
| | | position = "主管" |
| | | # 职业大类 |
| | | professional_category = "管理" |
| | | # 上级岗位 |
| | | superior_position = "总经理" |
| | | # 测试者报告邮件语言类型 |
| | | member_report_email_lang_type = "中文" |
| | | |
| | | # 获取创建测试包的数据 |
| | | create_data = data_read["add"] |
| | | |
| | | # 填写测试包名称 |
| | | test_package_list.testPackageName_input(test_package_name) |
| | | # 填写报告企业名称 |
| | | test_package_list.reportCompanyName_input(report_company_name) |
| | | test_package_list.reportCompanyName_input(create_data["company"]) |
| | | # 选择测试包类型 |
| | | test_package_list.testPackageType_select(test_package_type) |
| | | test_package_list.testPackageType_select(create_data["type"]) |
| | | # 选择产品包 |
| | | test_package_list.prodTree_select(prod_name) |
| | | test_package_list.prodTree_select(create_data["product"]) |
| | | # 输入hr邮箱 |
| | | test_package_list.hrReportEmail_input(hr_email) |
| | | test_package_list.hrReportEmail_input(create_data["hrEmail"]) |
| | | # 输入有效期 |
| | | test_package_list.invalidTime_input(invalid_time) |
| | | test_package_list.invalidTime_input(create_data["invalid"]) |
| | | # 选择邀请邮件语言类型 |
| | | test_package_list.testTemplateLangType_select(test_email_lang_type) |
| | | test_package_list.testTemplateLangType_select(create_data["memberLang"]) |
| | | # 选择HR邮件语言类型 |
| | | test_package_list.hrTemplateLangType_select(hr_report_email_lang_type) |
| | | test_package_list.hrTemplateLangType_select(create_data["hrReportLang"]) |
| | | # 选择报告模板 |
| | | test_package_list.reportTemplate_select(report_template) |
| | | test_package_list.reportTemplate_select(create_data["reportTemplate"]) |
| | | # 输入要评价的岗位 |
| | | test_package_list.position_input(position) |
| | | test_package_list.position_input(create_data["position"]) |
| | | # 输入职业大类 |
| | | test_package_list.professionalCategory_input(professional_category) |
| | | test_package_list.professionalCategory_input(create_data["professionalCategory"]) |
| | | # 输入上级岗位 |
| | | test_package_list.superiorPosition_input(superior_position) |
| | | test_package_list.superiorPosition_input(create_data["superiorPosition"]) |
| | | # 点击测试者接收报告 |
| | | test_package_list.autoSendReport_checkbox() |
| | | # 选择测试者报告邮箱语言类型 |
| | | test_package_list.memberReportLangType_select(member_report_email_lang_type) |
| | | test_package_list.memberReportLangType_select(create_data["memberReportLang"]) |
| | | # 点击确认按钮 |
| | | test_package_list.add_confirm() |
| | | time.sleep(2) |
| | | # 判断是否成功创建 |
| | | assert test_package_list.is_create_success(test_package_name) |
| | | time.sleep(5) |
| | | |
| | | def test_open_url(self): |
| | | @pytest.mark.parametrize('data_read', ["JAQ"], indirect=True) |
| | | def test_open_url(self, data_read: dict): |
| | | """ |
| | | 打开分享链接 |
| | | :return: |
| | |
| | | name = random_string(8) |
| | | email = name + "@gmail.com" |
| | | test_url = share_add.page_default_operation(name, email) |
| | | # test_url = "http://161.117.57.194/exam-stu/#/ots/94830ada-8f6c-44c0-8946-79c43267d9c1/login" |
| | | # 当前页面打开链接 |
| | | driver.get(test_url) |
| | | # 点击提交按钮 |
| | | share_add.submit_btn() |
| | | # 获取数据 |
| | | info = data_read["info"] |
| | | # 填写基本信息并提交 |
| | | share_add.fill_info(email, "职员", "人事部") |
| | | # 点击开始测试 |
| | | share_add.submit_btn() |
| | | share_add.fill_info(email, info["position"], info["dept"]) |
| | | time.sleep(5) |
| | | |
| | | def test_answer(self): |
| | | # 获取driver |
| | | driver = TestJAQ.driver |
| | | # 创建answer对象 |
| | | answer_page = AnswerPage(driver) |
| | | answer_page = JAQAnswerPage(driver) |
| | | # 点击开始测试 |
| | | answer_page.start_btn() |
| | | # 开始答题 |
| | | # flag = answer_page.answer_MAQ() |
| | | # if not flag: |
| | | # assert flag |
| | | # return |
| | | flag = answer_page.answer_MAQ() |
| | | # 答完题关闭当前标签页 |
| | | driver.close() |
| | | # 切换到第一个标签页 |
| | | answer_page.switch_window(0) |
| | | if flag is not None or not flag: |
| | | assert flag |
| | | return |
| | | |
| | | def test_delete_package(self): |
| | | # 获取driver |
| | |
| | | from po.home_page import HomePage |
| | | from po.test_package_list_page import TestPackageListPage |
| | | from po.share_add_page import ShareAddPage |
| | | from po.answer_page import AnswerPage |
| | | from po.maq_answer_page import MAQAnswerPage |
| | | from comm.my_random import * |
| | | |
| | | |
| | | class TestMAQ: |
| | | |
| | | driver = None |
| | | test_package_name = "MAQ自动测试包-20230711151825" |
| | | test_package_name = None |
| | | |
| | | def test_login(self): |
| | | @pytest.mark.parametrize('data_read', ["login"], indirect=True) |
| | | def test_login(self, data_read: dict): |
| | | """ |
| | | 打开页面并进行登录测试 |
| | | :param data_read: 执行数据读取的函数并获取到返回值 |
| | | :return: |
| | | """ |
| | | TestMAQ.driver = webdriver.Chrome() |
| | |
| | | login_page = LoginPage(driver) |
| | | try: |
| | | # 打开链接 |
| | | driver.get("http://161.117.57.194/login?lang=zh_CN") |
| | | driver.get(data_read["url"]) |
| | | except: |
| | | # 链接打开出现异常说明链接无法访问,捕获异常但不做处理 |
| | | pass |
| | |
| | | except: |
| | | break |
| | | |
| | | login_page.login("admin", "ots@2021!!", "ots") |
| | | login_page.login(data_read["username"], data_read["password"], data_read["code"]) |
| | | time.sleep(2) |
| | | assert login_page.is_login_success() |
| | | |
| | | def test_create_package(self): |
| | | @pytest.mark.parametrize('data_read', ["MAQ"], indirect=True) |
| | | def test_create_package(self, data_read: dict): |
| | | """ |
| | | 创建测试包 |
| | | :param data_read: 读取数据 |
| | | :return: |
| | | """ |
| | | # 获取driver |
| | |
| | | # 创建home页面的对象 |
| | | home_page = HomePage(driver) |
| | | # 点击左侧菜单进入页面 |
| | | home_page.menu_select("测试包管理/测试包列表") |
| | | |
| | | home_page.menu_select(data_read["menu"]) |
| | | # 创建测试包列表页面的对象 |
| | | test_package_list = TestPackageListPage(driver) |
| | | # 点击创建按钮 |
| | |
| | | test_package_name = "MAQ自动测试包-" + time_str |
| | | # 设置测试包名称为类变量 |
| | | TestMAQ.test_package_name = test_package_name |
| | | # 报告企业名称 |
| | | report_company_name = "TAI测试" |
| | | # 测试包类型 |
| | | test_package_type = "人格测试包" |
| | | # 产品包 |
| | | prod_name = "MAQV2" |
| | | # HR邮箱 |
| | | hr_email = "2077506045@qq.com" |
| | | # 有效期 |
| | | invalid_time = "2024-01-01 00:00:00" |
| | | # 测试者邀请邮件语言类型 |
| | | test_email_lang_type = "中文" |
| | | # hr报告邮件语言类型 |
| | | hr_report_email_lang_type = "中文" |
| | | # 报告模板 |
| | | report_template = "MAQV2-Complete-Chinese" |
| | | # 测试者报告邮件语言类型 |
| | | member_report_email_lang_type = "中文" |
| | | |
| | | # 获取创建测试包的数据 |
| | | create_data = data_read["add"] |
| | | # 填写测试包名称 |
| | | test_package_list.testPackageName_input(test_package_name) |
| | | # 填写报告企业名称 |
| | | test_package_list.reportCompanyName_input(report_company_name) |
| | | test_package_list.reportCompanyName_input(create_data["company"]) |
| | | # 选择测试包类型 |
| | | test_package_list.testPackageType_select(test_package_type) |
| | | test_package_list.testPackageType_select(create_data["type"]) |
| | | # 选择产品包 |
| | | test_package_list.prodTree_select(prod_name) |
| | | test_package_list.prodTree_select(create_data["product"]) |
| | | # 输入hr邮箱 |
| | | test_package_list.hrReportEmail_input(hr_email) |
| | | test_package_list.hrReportEmail_input(create_data["hrEmail"]) |
| | | # 输入有效期 |
| | | test_package_list.invalidTime_input(invalid_time) |
| | | test_package_list.invalidTime_input(create_data["invalid"]) |
| | | # 选择邀请邮件语言类型 |
| | | test_package_list.testTemplateLangType_select(test_email_lang_type) |
| | | test_package_list.testTemplateLangType_select(create_data["memberLang"]) |
| | | # 选择HR邮件语言类型 |
| | | test_package_list.hrTemplateLangType_select(hr_report_email_lang_type) |
| | | test_package_list.hrTemplateLangType_select(create_data["hrReportLang"]) |
| | | # 选择报告模板 |
| | | test_package_list.reportTemplate_select(report_template) |
| | | test_package_list.reportTemplate_select(create_data["reportTemplate"]) |
| | | # 点击测试者接收报告 |
| | | test_package_list.autoSendReport_checkbox() |
| | | # 选择测试者报告邮箱语言类型 |
| | | test_package_list.memberReportLangType_select(member_report_email_lang_type) |
| | | test_package_list.memberReportLangType_select(create_data["memberReportLang"]) |
| | | # 点击确认按钮 |
| | | test_package_list.add_confirm() |
| | | time.sleep(2) |
| | | # 判断是否成功创建 |
| | | assert test_package_list.is_create_success(test_package_name) |
| | | time.sleep(5) |
| | | |
| | | def test_open_url(self): |
| | | @pytest.mark.parametrize('data_read', ["MAQ"], indirect=True) |
| | | def test_open_url(self, data_read: dict): |
| | | """ |
| | | 打开分享链接 |
| | | :return: |
| | |
| | | name = random_string(8) |
| | | email = name + "@gmail.com" |
| | | test_url = share_add.page_default_operation(name, email) |
| | | # test_url = "http://161.117.57.194/exam-stu/#/ots/94830ada-8f6c-44c0-8946-79c43267d9c1/login" |
| | | # 当前页面打开链接 |
| | | driver.get(test_url) |
| | | # 点击提交按钮 |
| | | share_add.submit_btn() |
| | | # 获取数据 |
| | | info = data_read["info"] |
| | | # 填写基本信息并提交 |
| | | share_add.fill_info(email, "职员", "人事部") |
| | | # 点击开始测试 |
| | | share_add.submit_btn() |
| | | share_add.fill_info(email, info["position"], info["dept"]) |
| | | time.sleep(5) |
| | | |
| | | def test_answer(self): |
| | | # 获取driver |
| | | driver = TestMAQ.driver |
| | | # 创建answer对象 |
| | | answer_page = AnswerPage(driver) |
| | | answer_page = MAQAnswerPage(driver) |
| | | # 点击开始测试 |
| | | answer_page.start_btn() |
| | | # 开始答题 |
| | | flag = answer_page.answer_MAQ() |
| | | if flag is None or not flag: |
| | | assert flag |
| | | return |
| | | # 答完题关闭当前标签页 |
| | | driver.close() |
| | | # 切换到第一个标签页 |
| | | answer_page.switch_window(0) |
| | | if flag is not None or not flag: |
| | | assert flag |
| | | return |
| | | |
| | | def test_delete_package(self): |
| | | # 获取driver |
| | |
| | | time.sleep(5) |
| | | # 关闭 |
| | | driver.quit() |
| | | |
| | | |
| | | |
| | | if __name__ == '__main__': |