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

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

文章目录

  • 前言
  • 一、环境准备
  • 二、问题总结
  • 三、框架设计(待完善)
  • 四、代码设计
    • 1.配置文件
    • 3.测试用例:test_case01
    • 4.执行用例:run.py
  • 总结


前言

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

一、环境准备

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目录)
python+selenium+allure+pytest webUI自动化小白上路_第1张图片

三、框架设计(待完善)

1.common:公共用例,比如登录
2.configs:配置文件,比如账号密码、测试环境
3.testcase:测试用例
4.run:执行入口
5.tools:测试方法,比如读写方法
python+selenium+allure+pytest webUI自动化小白上路_第2张图片

四、代码设计

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('生成测试报告成功')

总结

不定时更新

你可能感兴趣的:(python,自动化,selenium)