当前位置: 首页 > article >正文

Selenium+Unittest+HTMLTestRunner框架更改为Selenium+Pytest+Allure(二)

1   代码框架

        整体项目结构如图:

        

    Common:公共库

                

     Logs: 日志目录

     Page: 页面元素

     Report:测试报告

     TestCase:测试用例

     TestData: 测试数据

2   单模块运行

    直接上代码:

    

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     TestJohnDeere.py
   Author :        曾良均
   QQ:             277099728
   Date:          12/1/2023 4:03 PM   
   Description :
-------------------------------------------------
   Change Activity:
                   
-------------------------------------------------
"""
__author__ = 'ljzeng'

import pytest
from Common.logger import Log
from Common.Operator import *
from Common.Logins import Logins
from Page.Credentials.CredentialsPage import CredentialsPage as cp
from selenium.webdriver.common.by import By
import allure

log = Log("TestJohnDeere")


class TestJohnDeere:
    driver = None
    lg = None
    page = None

    coll = (By.XPATH, '//*[@id="nav_arrow"]/div')

    @pytest.fixture()
    def begin(self):
        log.info('--------开始测试John Deere Credentials功能--------')
        self.driver = browser("chrome")
        self.lg = Logins()
        self.lg.login(self.driver, 'atcred@iicon004.com', 'Win.12345')
        self.driver.implicitly_wait(10)

        self.page = cp()
        ac = self.lg.get_attribute(self.coll, 'class')
        while True:
            if ac != 'icn collapse':
                ar = (By.ID, 'nav_arrow')
                self.page.click(ar)
                continue
            else:
                break
        self.lg.click(self.page.johndeere_menu)
        time.sleep(1)
        self.lg.switch_to_iframe(self.page.right_iframe)

        yield self.lg
        self.driver.quit()

    def add_jdlink(self, begin):
        log.info('点击 JD Link 的Add')
        if not begin.is_clickable(self.page.jdlink_add_btn):
            time.sleep(2)
        try:
            begin.click(self.page.jdlink_add_btn)
            time.sleep(1)
            self.driver.switch_to.window(self.driver.window_handles[1])
            time.sleep(2)
            txt = begin.get_text(self.page.jdlink_page_signin_lable)
        except Exception:
            log.info('Add 跳转失败!')
            return False
        else:
            log.info('Add 跳转成功!')
            self.driver.switch_to.window(self.driver.window_handles[0])
            if txt == 'Sign In':
                return True
            else:
                return False

    @allure.feature("测试Credentials功能")
    @allure.story("测试JD Link Credentials设置功能")
    def test_addJDlink(self, begin):
        """测试Add JD Link功能"""
        res = self.add_jdlink(begin)
        if res:
            log.info('Add JD Link 测试成功!')
        else:
            log.info('Add JD Link 测试失败!')
        assert res


if __name__ == '__main__':
    pytest.main(['-vs', 'TestJohnDeere.py'])  # 主函数模式

        pytest.main(['-vs', 'TestJohnDeere.py']) 

        只运行当前文件,执行结果在Pycharm工作台显示。

3   主函数运行指定用例

  3.1  pytest.ini定义要执行的用例文件、类、方法    
[pytest]
addopts=-vs                 
testpaths=./TestCase
python_files=Test*.py
python_classes=Test
python_functions=test
markers=
    smoke:
    uermanage:
  3.2  主函数运行(run.py)

    

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     run.py
   Author :        曾良均
   QQ:             277099728
   Date:          12/4/2023 9:27 AM   
   Description :    这是所有测试用例运行的主函数
-------------------------------------------------
   Change Activity:

-------------------------------------------------
"""
__author__ = 'ljzeng'
import pytest
import os


if __name__ == '__main__':
    pytest.main(['-s', '-q', '--clean-alluredir', '--alluredir=allure-results'])
    os.system(r"copy environment.properties allure-results\\")
    os.system(r"allure generate -c -o Report\allure-report")
    # os.system(r"allure open Report\allure-report")  # 此命令会打开报告

4  查看Allure报告

    通过主函数生成Allure报告文件,命令行打开报告:    

allure open Report\allure-report

  浏览器自动打开报告:

5  遇到的问题

    5.1 allure-results does not exists

    当pytest.main中指定的--alluredir不是allure-results时,后面执行allure generate会把如题错误

解决方法:指定 --alluredir=allure-results 即可


http://www.kler.cn/a/163415.html

相关文章:

  • FMC 扩展子卡6 路 422,8 组 LVDS,8 路 GPIO
  • 关于Django 模型字段 `choices`自定义数据类型的枚举——补充
  • SQLI LABS | Less-40 GET-BLIND Based-String-Stacked
  • IntelliJ IDEA的快捷键
  • ctfshow-web入门-反序列化(web271-web278)
  • 【LeetCode】【算法】3. 无重复字符的最长子串
  • 高通CRM的v4l2驱动模型
  • 【嵌入式C语言】《字符串-----数字》转换函数总结
  • 国产化软件突围!怿星科技eStation产品荣获2023铃轩奖“前瞻优秀奖”
  • 【MySQL】聚合函数和分组(查找)
  • 基于深度学习路径规划RRT*-训练图像预处理
  • 制作一个RISC-V的操作系统四-嵌入式开发介绍
  • KNN朴素贝叶斯(根据已知推测未知)
  • 计算一组x和y(一维数组)
  • 3D渲染和动画制作软件KeyShot Pro mac附加功能
  • Opencv UI自动化应用人脸识别
  • 设计模式--建造者模式
  • Matplotlib中的titles(标题)、labels(标签)和legends(图例)
  • Android studio生成二维码
  • 浅谈前端代码里的命名规范与注释
  • 大一C语言作业 12.8
  • 图片处理OpenCV IMDecode模式说明【生产问题处理】
  • Qt工程文件分离、Qtimer定时器、Qt Creator 常用快捷键
  • jsp 个人网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • Hazel引擎学习(十二)
  • C++初阶-string类的模拟实现