首页 > 其他分享 >pytest和allure生成报告

pytest和allure生成报告

时间:2023-10-31 18:35:14浏览次数:27  
标签:XPATH allure driver value 生成 pytest div element find

测试用例:

import time
from selenium.webdriver.support import expected_conditions as EC
import pytest
import yaml
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

result = {}

zoom = 1

def get_data():
    with open("../data/data.yaml", encoding="utf8") as f:
        data = yaml.safe_load(f.read())
    return data


def emp_login(driver):
    # 用户名↓
    driver.find_element(by=By.XPATH, value="//input[@tabindex=1]").send_keys("gxaadmin")
    # 密码↓
    driver.find_element(by=By.XPATH, value="//input[@tabindex=2]").send_keys("123456")
    # 登录↓
    driver.find_element(by=By.XPATH, value="//button[@tabindex=3]").click()


"""
param data: {"e_name":"jack", "e_password":"123456",
              "e_sex":"男", "e_jointime":"2021-06-21 12:00:00",
              "e_level": "1", "e_rfid":"12345678901234567890123456789012",
              "e_idCard":"554001198505112345",
              "e_phone":"13709013307", "e_birthday":"2021-06-13 12:00:00", "e_state":"1"}
"""


# @pytest.mark.parametrize("e_name,e_password,e_sex,e_jointime,e_level,e_rfid,e_idCard,e_phone,e_birthday,e_state"
#     ,
#                          [["jack1", "123456", "男", "2021-06-21 12:00:00", 1, "12345678901234567890123456789012",
#                            "554001198505112345", "13709013307", "2021-06-13 12:00:00", 1]])
@pytest.mark.parametrize("e_name,e_password,e_sex,e_jointime,e_level,e_rfid,e_idCard,e_phone,e_birthday,e_state"
    , get_data()['emp_data'])
def test_add_emp(e_name, e_password, e_sex, e_jointime, e_level, e_rfid, e_idCard, e_phone, e_birthday, e_state):
    driver = webdriver.Chrome()
    try:
        driver.get("http://localhost:8080/#/")
        driver.maximize_window()
        print("登录开始!!!")
        emp_login(driver)
        print("登录结束!!!")

        time.sleep(1)
        driver.execute_script("document.body.style.zoom='" + str(zoom) + "'")  # 缩小
        # 标题
        # print("title = " + driver.title)
        print("添加员工开始!!!!")
        # 添加员工↓
        driver.find_element(by=By.XPATH, value="//button[@tabindex=17]").click()
        driver.find_element(by=By.XPATH, value="//input[@tabindex=1]").send_keys(f"{e_name}")
        driver.find_element(by=By.XPATH, value="//input[@tabindex=2]").send_keys(f"{e_rfid}")
        driver.find_element(by=By.XPATH, value="//input[@tabindex=3]").send_keys(f"{e_password}")
        driver.find_element(by=By.XPATH, value="//input[@tabindex=4]").send_keys(f"{e_idCard}")
        if '男' == e_sex:
            driver.find_element(by=By.XPATH, value="//label[@tabindex=5]").click()
        else:
            driver.find_element(by=By.XPATH, value="//label[@tabindex=-1]").click()
        driver.find_element(by=By.XPATH, value="//input[@tabindex=7]").send_keys(f"{e_phone}")
        driver.find_element(by=By.XPATH, value="//div[@tabindex=8]/input").send_keys(f"{e_jointime}")
        driver.find_element(by=By.XPATH, value="//div[@tabindex=9]/input").send_keys(f"{e_birthday}")
        # driver.find_element(by=By.XPATH, value="//div[@tabindex=10]/div/input").send_keys("员工")
        # driver.find_element(by=By.XPATH, value="//div[@tabindex=11]/div/input").send_keys("在职")
        driver.find_element(by=By.XPATH,
                            value='//*[@id="app"]/div[2]/div[2]/div/div[3]/div[2]/div/form/div[10]/div/div/div[1]/div[1]/input').click()
        if e_level != 1:
            e_level = 2
        for i in range(1, 10):
            try:
                driver.find_element(by=By.XPATH,
                                    value='/html/body/div[' + str(i) + ']/div[1]/div[1]/ul/li[' + str(
                                        e_level) + ']').click()
            except Exception as e:
                # print("打印《操作等级》第" + str(i) + "个异常:" + str(e.args[0]))
                continue
            print("打印《操作等级》第" + str(i) + "个div成功")
            break
        time.sleep(1)
        driver.find_element(by=By.XPATH,
                            value='//*[@id="app"]/div[2]/div[2]/div/div[3]/div[2]/div/form/div[9]/div/div[1]/div[1]/input').click()
        if e_state == 0:
            e_state = 2
        for i in range(1, 10):
            try:
                # /html/body/div[2]/div[1]/div[1]/ul/li[2]
                driver.find_element(by=By.XPATH,
                                    value='/html/body/div[' + str(i) + ']/div[1]/div[1]/ul/li[' + str(
                                        e_state) + ']').click()
            except Exception as e:
                # print("打印《在职状态》第" + str(i) + "个异常:" + str(e.args[0]))
                continue
            print("打印《在职状态》第" + str(i) + "个div成功")
            break
        driver.find_element(by=By.XPATH, value="//div[@tabindex=0]/input").send_keys(
            r"F:\870_1_Files\PythonFiles\SeleniumPro\selenium_pytest\test_selenium\test.jpg")
        driver.find_element(by=By.XPATH, value="//button[@tabindex=13]").click()

        # 等待弹窗显示
        wait = WebDriverWait(driver, 10)
        wait.until(EC.alert_is_present())
        alert = driver.switch_to.alert
        result['add_emp_result'] = alert.text
        alert.accept()
        print("添加员工结束!!!")
    except Exception as e:
        raise e
    finally:
        # time.sleep(1)
        driver.quit()



def teardown_function():
    print(result)
    assert result['add_emp_result'] == "添加成功"


if __name__ == '__main__':
    # test_login_add()
    pytest.main()
    # login_and_add_user()
    # main()

data.yaml

emp_data:
  - [ jack,123456,男,2021-06-21 12:00:00,1,12345678901234567890123456789012,554001198505112345,13709013307,2021-06-13 12:00:00,1 ]
  #- [ jackson,123422,男,2023-10-31 12:00:00,1,12345678901234567890123456789011,554001198505112325,13709013303,2023-10-31 12:00:00,1 ]

pytest.ini

[pytest]
testpaths=./
markers =
    p0:最高优先级
    test:测试环境
    pro:生成环境
addopts = -vs --alluredir ./report

 

运行测试用例生成报告:

 

在控制台输入 allure serve ./report (后面是路径)

 自动打开↓

报告生成成功。

 

第二种生成报告方式:

1、输入命令 allure generate .\report\

生成文件夹:

2、输入命令allure open .\allure-report\

可以打开和上面一样的界面。

自定义生成报告文件夹名

输入命令 allure generate -o allure_report (-o 后面是自定义文件夹名)

 

标签:XPATH,allure,driver,value,生成,pytest,div,element,find
From: https://www.cnblogs.com/0099-ymsml/p/17800964.html

相关文章

  • 使用Postman快速复现浏览器的请求(包括生成调用代码)
    前言大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。好久没有写开发类的工具使用文了,这次我来讲下平时我是如何使用Postman工具的。一、工具准备软件下载链接:https://www.postman.c......
  • pytest使用
    安装:pipinstallpytest命名规则:.py文件和文件内方法都以test_开头注意:文件及文件夹命名不要与关键字重复前置与后置函数:module范围:importpytestdemoimportrequests#每一个模块都会执行defsetup_module():print("开始了!!!")#每一个模块都会执行defteard......
  • java根据模板生成表格和列表
    1、模板所有的标签都是以{{开始,以}}结束。{{template}}文本{{@template}}图片{{#template}}表格{{*template}}列表{{+template}}Word文档合并{{?template}}{{/template}}if和foreach功能 2、引入包<!--POI依赖使用xlsxxml的格式(即X......
  • flutter 快速生成模型文件
    安装依赖flutterpackagesaddbuild_runnerflutterpackagesaddjson_serializable定义文件lib/models/user.dartimport'package:json_annotation/json_annotation.dart';part'user.g.dart';@JsonSerializable()classUser{User(this.name,......
  • UnrealSynth虚幻合成数据生成器
    UnrealSynth虚幻合成数据生成器利用虚幻引擎的实时渲染能力搭建逼真的三维场景,为YOLO等AI模型的训练提供自动生成的图像和标注数据。UnrealSynth生成的合成数据可用于深度学习模型的训练和验证,可以极大地提高各种行业细分场景中目标识别任务的实施效率,例如:安全帽检测、交通......
  • ffmpeg实现视频的分割生成测试用的图片视频和音频
    测试代码如下:#!/bin/bash#提示用户输入参数read-p"请输入要切分的MP4文件名:"filenameread-p"请输入要生成的视频数量:"video_countread-p"请输入视频文件的大小范围(单位MB,例如10-20):"video_size_rangeread-p"请输入要生成的图片数量:"image_countread-......
  • 使用适用于企业的 Amazon Bedrock 释放生成式人工智能的力量!
    AmazonBedrock是一项完全托管的服务,可从Amazon和可通过API访问的第三方模型提供程序.目前支持以下基础模型,通过Bedrock我们可以很轻松只通过几次点击就可以实现复杂的文本,图片,对话聊天等生成式的任务。本文将会介绍一下怎么开始使用AmazonBedrock以及Bedrock的基础演示。模......
  • pytest框架
    pytest安装a)安装pipinstallpytestb)验证安装pytest--version1、pytest的⽤例运⾏规则1)pytest将在当前⽬录及其⼦⽬录中运⾏所有格式为test.py或者test.py⽂件2)测试⽅法/测试函数默认必须是test开头3)测试类必须是Test开头4)测试类不能有构造⽅法init,会影响用......
  • Pytest基础
    一、前言  Pytest基于Python设计,是一款开源免费、功能全面的单元测试框架,车载以太网测试中被广泛使用。二、工具说明Pycharm2023pytest7.4.3三、创建工程  创建工程时重点要求使用VituralEnvironment,这里直接选择。四、Pytest环境安装在根目录下创建文件Requiremen......
  • 运用chatGPT生成E-R图的prompt
     根据以上内容,让我们定义用例让我们为用例定义一个数据模型   更详细地描述数据模型或使用Markdown的表格格式这种模型可以根据具体的用例进行扩展和修改,以满足需求分析和设计过程中的实际需要。 为所有的数据模型定义关系,实体关系图输出为PlantUML 将带......