python+selenium+allure+pytest webUI自动化小白上路

  • Post author:
  • Post category:python


提示:python+selenium+allure+pytest webUI自动化文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档




前言


生命不息,奋斗不止,加油吧!



一、环境准备

1.python3.8

2.selenium4.3.0

3.allure(配置环境变量,cmd查看) 2.9

4.allure-pytest 2.9.2=25



二、问题总结

1.怎么都定位不到元素?

senenium的版本问题,最新版本的语法有所调整,建议下新版的

driver.find_element(By.ID, “password”) 新版本语法

driver.find_element_by_id( “password”)旧版语法

新版本的话开头引入如下

from selenium.webdriver.common.by import By

2.无法生成allure的html报告?

检查allure环境变量配置

系统–>高级系统设置–>环境变量–>系统变量–>path(allure的bin目录)

在这里插入图片描述



三、框架设计(待完善)

1.common:公共用例,比如登录

2.configs:配置文件,比如账号密码、测试环境

3.testcase:测试用例

4.run:执行入口

5.tools:测试方法,比如读写方法

在这里插入图片描述



四、代码设计



1.配置文件

测试账号、测试环境可以提前放在一个文件,方便读取

1.测试环境如下

current_env = "预发"
env_dict = {
    "日常":"https://bip-daily.xxx.com/#/",
    "预发":"https://bip-pre.xxx.com/#/",
    "线上":"https://yonsuite.xxx.com/#/"
}

if __name__ == '__main__':
    print(env_dict[current_env])

2.测试账号如下:

username = "188xxxxxxx
password = "123xxxxxxxx"


#日常
# username = "199xxxxxxxxxxx "
# password = "yonxxxxxxxxxxxxxx"

`


## 2.公共用例:登录
登录作为一个公共方法封装,放common目录下后期调用
```c
ifrom selenium import webdriver
from selenium.webdriver.common.by import By
from configs.env import env_dict,current_env
from configs.account import username,password
import time

class Driver:
    def __init__(self): #初始化方法
        self.driver = webdriver.Chrome()
        #设置智能等待,最多等5秒
        self.driver.implicitly_wait(5)
        #最大化窗口
        self.driver.maximize_window()
        #访问到项目网址
        self.driver.get(env_dict[current_env])
        #登录
        self.login()
    def login(self):
        global driver
        self.driver.switch_to.frame("yonbip_login_id")  # 切换frame
        # 输入用户名
        self.driver.find_element(By.ID, "username").send_keys(username)
        # 输入密码
        self.driver.find_element(By.ID, "password").send_keys(password)
        # 点击登录
        self.driver.find_element(By.ID, "submit_btn_login").click()

if __name__ == '__main__':
    Driver()



3.测试用例:test_case01

1.测试用例以test开头、类以Test开头、函数以test开头

2.pytest会自动读取test开头的

import allure,pytest
from common.myDriver import Driver
from selenium.webdriver.common.by import By
import time
class Test_Org:
    def test_crate_org(self):
        with allure.step("打开浏览器,登录系统"):
            #打开一个空白浏览器
            my_driver = Driver()
            #对当前屏幕截图.截图保存到report文件夹中
            my_driver.driver.get_screenshot_as_file("./test_report/登录成功后进入的主页面.png")
            #将上一步截图附加进测试报告
            allure.attach.file("./test_report/登录成功后进入的主页面.png",attachment_type=allure.attachment_type.PNG)data = pd.read_csv(
    



4.执行用例:run.py

import allure,os,pytest
if __name__ == '__main__':

    # pytest.main(['-sq','--alluredir','./test_result']) #-s输出打印信息,-q简化
    # # 使用allure产生报告
    # os.system("allure serve ../test_report")
    result_dir = "./test_result"
    report_dir = "./test_report"
    pytest.main(["-sv", "--alluredir=%s" % result_dir, "--clean-alluredir", "test_Org.py"])
    os.system("allure generate --clean %s -o %s" % (result_dir, report_dir))
    ret = os.system("allure generate --clean %s -o %s" % (result_dir,report_dir))
    if ret:
        print('生成测试报告失败')
    else:
        print('生成测试报告成功')



总结

不定时更新



版权声明:本文为weixin_41977978原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。