pytest+python 項目初步實踐及生成allure報告


前言:在使用unittest 框架時,發現其兩個缺點:

1、unittest 執行測試用例中每個.py文件時都要重新打開瀏覽器,無法實現一次性加載瀏覽器來執行所有用例(如:登錄--》執行所有用例--》退出);

2、unittest框架局限性,driver不能跨py模塊使用。

為了解決以上問題,於是就去學習了pytest框架並做了初步實踐,如果寫的不好,還請大家多指教!

 

場景及操作步驟:

1、登錄(需要輸入用戶名、密碼,點擊登錄按鈕;登錄成功后獲取登錄結果)

2、新建用戶 (登錄以后可以新建用戶)

3、關閉瀏覽器

 

一、pytest 的安裝

1、安裝

命令:pip install -U pytest

 2、查看版本

命令:pip show pytest

 

二、編寫代碼

1、項目目錄

case : 存放測試用例

common : 存放公共文件

page: 封裝頁面業務

report: 存放測試報告

conftest.py : 文件名不能修改,同目錄下所有測試文件運行前會執行此文件 

 2、base.py  文件,封裝基本操作方法

# -*- coding=utf-8 -*-
from selenium.webdriver.support.ui import WebDriverWait from selenium import webdriver from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException class Base(object): def __init__(self, driver): self.driver = driver def find(self, locator): """locator = ("id","kw"),查找某元素"""
        try: element = WebDriverWait(self.driver, 10, 1).until(lambda x: x.find_element(*locator)) return element except TimeoutException as msg: print("元素不存在") def send(self, locator, text): """輸入框傳值,元素不存在時跳過執行"""
        try: self.find(locator).clear() self.find(locator).send_keys(text) except TimeoutException as msg: # print("元素不存在",msg)
            pass

    def click(self,locator): """點擊事件""" self.find(locator).click()

3、login.py  文件,登錄的業務代碼

# -*- coding=utf-8 -*-
from selenium import webdriver import time from common.base import Base class Login(Base): def login(self, username, password): """登錄""" user = ('name', 'loginName') self.send(user, username) pwd = ('name', 'loginPassWord') self.send(pwd, password) submit = ('id', 'loginBtn') self.click(submit) time.sleep(2) content = ('id', 'title') res = self.find(content).text print('已成功登錄', res) if __name__ == '__main__': driver = webdriver.Chrome() url = "" driver.get(url)

4、adduser.py  文件  登錄后添加用戶的業務代碼

# -*- coding=utf-8 -*-
from selenium import webdriver import time from common.base import Base import time class AddUser(Base): def add_user(self, user, phone, password, repassword): """登錄后添加用戶""" yonghu = ('id', 'uname') self.send(yonghu, user) shouji = ('id', 'uphone') self.send(shouji, phone) mima = ('id', 'password') self.send(mima, password) remima = ('id', 'password2') self.send(remima, repassword) time.sleep(1) button = ('id', 'savebtn2') self.click(button) if __name__ == '__main__': driver = webdriver.Chrome() url = "" driver.get(url)

5、conftest.py  文件

# -*- coding=utf-8 -*-
import pytest from selenium import webdriver from page.login import Login import time @pytest.fixture(scope='session') def driver(): global _driver print('------------open browser------------') _driver = webdriver.Chrome() _driver.maximize_window() _driver.implicitly_wait(10) yield _driver print('------------close browser------------') _driver.quit() @pytest.fixture(scope='session') def login(driver): """登錄""" url = "登錄的url地址" driver.get(url) time.sleep(5) login_system = Login(driver) login_system.login("13166666666", "666666") yield driver.delete_all_cookies()

6、測試用例文件:test_user_one.py、test_user_two.py ,兩個文件內容一樣,只是模擬兩個用例。

import pytest from page.adduser import AddUser class TestOne(object): def test_01(self, login, driver): url = "新增用戶頁面的url地址" driver.get(url) user = AddUser(driver) user.add_user('test', '13122222224', '666666', '666666') if __name__ == '__main__': pytest.main(["-s", "test_user_one.py"])

 

三、運行測試用例

1、進入項目根目錄

2、輸入命令:

pytest case  (運行多個測試用例)

pytest  case/test_user_one.py (運行單個用例)

 

-s : 顯示打印信息

 四、生成allure測試報告

1、安裝allure

下載allure 最新版:https://github.com/allure-framework/allure2/releases

 

將下載后的壓縮包解壓至本地(比如解壓至D盤)

 

 

把bin目錄添加到環境變量path下

 

 2、安裝 allure-pytest

pip install allure-pytest

3、運行用例

(1)打開cmd命令

(2)進入到項目根目錄

(3)執行命令

pytest --alluredir ./report/allure_raw

 

 執行命令完成后,在report文件下中可以看到生成了一個allure_raw的原始文件,不能打開成html的報告。

 

 打開html的報告需要啟動allure服務,啟動命令如下

allure serve report/allure_raw

啟動服務后會自動分配端口並打開瀏覽器

 

 五、查看測試報告

 

 

 

 

以上就是所有內容了,快來試試吧~

 

過程中報錯解決:

運行生成報告命令時報如下錯誤:是因為安裝的pytest版本不兼容,提示推薦使用pytest 4.5.0 。

 

 卸載 pytest 其他版本,如5.3.2

pip uninstall pytest==5.3.2

安裝 pytest 4.5.0

pip install pytest==4.5.0

 

最后附 allure 生成測試報告參考資料:https://www.cnblogs.com/yoyoketang/p/12004145.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM