1. 程式人生 > >基於python語言的selenium自動化測試(2)-測試程式碼與指令碼程式碼分離

基於python語言的selenium自動化測試(2)-測試程式碼與指令碼程式碼分離

上一篇介紹瞭如何搭建selenium環境,也給出了一小段程式碼演示如何使用selenium
部落格不會過多的介紹如何使用selenium api 更多地在於如何構建一個自動化測試專案,
程式碼的分層是很關鍵一步,本文介紹如何使用pytest+selenium的框架做到測試程式碼與指令碼程式碼的分離

pytest是一個非常成熟的全功能的Python測試框架,主要特點有以下幾點:

1、簡單靈活,容易上手;
2、支援引數化;
3、能夠支援簡單的單元測試和複雜的功能測試,還可以用來做selenium/appnium等自動化測試、介面自動化測試(pytest+requests);
4、pytest具有很多第三方外掛,並且可以自定義擴充套件,比較好用的如pytest-selenium(整合selenium)、pytest-html(完美html測試報告生成)、pytest-rerunfailures(失敗case重複執行)、pytest-xdist(多CPU分發)等;
5、測試用例的skip和xfail處理;
6、可以很好的和jenkins整合;

1、pytest安裝

pip install -U pytest   

2、pytest執行程式碼指令碼

if __name__ == '__main__':
    pytest.main("-q test_xxx.py")

3、pytest的fixtures

setup_class/teardown_class       在當前測試類的開始與結束執行。

setup/treadown                   在每個測試方法開始與結束執行。

setup_method/teardown_method     在每個測試方法開始與結束執行,與setup/treadown級別相同。

copy一段下午寫的程式碼
test_youdanweb.py:

#coding=utf-8
import pytest
from youdanweb import YoudanWeb
youdan = YoudanWeb()
class Testlogin:
    def setup_class(self):
        youdan.initialize()
    def teardown_class(self):
        youdan.quit()
    def test_loginfail(self):
        assert u'佣金' in youdan.login('15914145610'
,'456789') def test_loginpass(self): assert u'佣金' in youdan.login('15914145610','123456') if __name__ == '__main__': pytest.main("-q test_youdanweb.py")

youdanweb.py:

#usr/bin/python
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
import time
class YoudanWeb():
    def initialize(self):
        chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
        os.environ["webdriver.chrome.driver"] = chromedriver
        self.driver = webdriver.Chrome(chromedriver)
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)
        self.base_url ="https://m.youdan.me"
    def youdanSearch(self,keywords):
        driver = self.driver
        driver.get(self.base_url +"/")
        time.sleep(2)
        driver.find_element_by_xpath(".//a[@class='sprite search-ico txt-over']").click()
        input = driver.find_element_by_id('filterValue')
        input.send_keys(keywords)
        time.sleep(2)
        input.send_keys(Keys.ENTER)
        return driver.page_source
    def login(self,user,pwd):
        driver = self.driver
        driver.get(self.base_url +"/")
        driver.find_element_by_xpath(".//a[@class='nav-ico']").click()
        time.sleep(1)
        driver.find_element_by_xpath(".//a[@class='blue-btn']").click()
        time.sleep(2)
        driver.find_element_by_id('mobile').send_keys(user)
        driver.find_element_by_id('password').send_keys(pwd)
        time.sleep(1)
        driver.find_element_by_id("next").click()
        time.sleep(1)
        return driver.page_source
    def quit(self):
        self.driver.quit()
    def save_screenshot(self,name):
        self.driver.save_screenshot('%s.png'%name)

相關推薦

基於python語言selenium自動化測試2-測試程式碼指令碼程式碼分離

上一篇介紹瞭如何搭建selenium環境,也給出了一小段程式碼演示如何使用selenium 部落格不會過多的介紹如何使用selenium api 更多地在於如何構建一個自動化測試專案, 程式碼的分層是很關鍵一步,本文介紹如何使用pytest+selenium

ionic之如何應用karma進行單元測試2-測試controller和service

所有文章,首發於CSDN-檸檬加冰部落格 測試controller和service準備工作 準備工作 專案搭建 你已經按照上一篇文章,建立了ionic-tests工程,並在工程中載入

學習《selenium2自動化測試基於python》遇到的問題

pypi tools bsp sel dir python 解決方案 打不開 什麽 問題一: 通過cmd,用Python安裝setuptools時,報錯no module named ‘six‘等類似情況時,解決方案: 翻譯過來就是缺少SIX的模塊,直接到官網打開,下載

python自動化測試2-自動化基本技術原理

4   更底層的原理 前面講到了對把軟體專案從看到的具體的介面往底層一點抽象成資料的方法。其實還有一些更底層,更絕的,對軟體的資料還可以更底層一點和物理世界建立關聯(這已經不好用“抽象”或者“具象”來描述了)。 本部分的內容,已經和應用軟體的測試的話題有點扯遠了,純粹就當科普吧。 從更廣泛的角度來看

基於PythonSelenium自動化(4)—如何生成測試報告

在專案中一般都會使用單元測試框架來對我們的測試程式碼進行管理,python中單元測試框架很多,其中有幾個比較好的單元測試框架,例如:unittest,nose,pytest等。上一篇部落格中介紹了pytest框架的基本使用。這篇文章將介紹的是如何使用pytest

樂搏講自動化測試-python語言特點及優缺點5

腳本 網頁 分享 編譯程序 符號 支持 目前 載器 速度 相信小夥伴們都知道,隨著軟件測試行業的發展和進步自動化測試已經成為必然。在競爭日益激烈的市場環境中也是你升職加薪的利器。 所以,小編決定從今天起!將要系統、連續、高質量的持續更新「整套自動化測試」文章!從0開始,讓你

Selenium自動化測試實戰:基於PythonSelenium自動化測試框架入門

第1章  Selenium自動化測試框架入門  1.1  Selenium自動化測試框架概述   說到目前流行的自動化測試工具,相信只要做過軟體測試相關工作,就一定聽說過Selenium。   圖1-1是某企業招聘自動化測試工程師的資訊,大家可以看到在崗位任職條件方面明確

基於PythonSelenium自動化(3)— 實現驗證碼擷取並識別

這些天實在忙的冒煙,一大堆的專案堆在一起,沒日沒夜的加班。加上有些懶惰,學習進度一直沒有太多進展。這篇文章主要介紹前段時間抽空實現的一個功能,希望有需要用到可以得到一點啟發。 基於UI層的自動化,有一些坑在裡面,幾乎幾個每個人都會遇到的,其中之一就是註冊或登入

Robot Framework + Selenium2Library自動化測試2

安裝好環境之後,就可以來簡單的練手一個網站登入的例子啦 啟動RIDE,點選File-》New Project,對話方塊彈出來,給工程起個名字“MyFristTest”,可以自己選擇工程的位置,右邊的兩個選項可以選擇型別和格式。選擇file,就是指這個工程就一個test ca

C語言代碼訓練營2

周末 int main 基本 之前 lin 例題 鏈接 params 上一篇的評論中,大家反饋評論中貼代碼無法排版。我們改一下規則,大家可以把自己實現的代碼發布在自己的簡書博文中,之後把鏈接貼在評論中。這樣也方便大家日後追溯。 當然,也可以直接發郵件給我。希望大家堅持打卡,

python導入模塊2

line -h .com pre () main alt class print main.py文件 #_*_coding:utf-8_*_ #__author__ = "csy" from module_csy import say_hello as hello

Robot Framework接口測試2--http請求之get

pci frame font urllib status pac 只需要 install height 本來打算把http發送請求的get和post方法都介紹一下的,結果發現篇幅有點長,文本編輯也變得混亂,所以這裏先介紹一下get方法,下一次再post。其實這些方法大家

27. Python對Mysql的操作2

python mysql1.遊標遊標是系統為用戶開設的一個數據緩沖區,存放SQL語句的執行結果用戶可以用SQL語句逐一從遊標中獲取記錄,並賦給主變量,交由python進一步處理,一組主變量一次只能存放一條記錄僅使用主變量並不能完全滿足SQL語句向應用程序輸出數據的要求遊標提供了一種對從表中檢索出的數據進行操作

代碼編輯器[0] -> Vim/gVim -> 基於 Python 的 gVim 環境配置Windows

ngs 進入 pts odin read plm number 信息 文件信息 環境配置 / Environment Setup 基於Python開發的 gVim 環境配置(Windows) 1 基於vundle進行配置 Vim有多個擴展管理器,但是強烈推薦Vund

WEB測試2--WEB核心技術之WEB工作過程---URL

class wpa quest www. gpo 類型 pos item src web工作過程,首先談到url地址解析。如下圖:包括5個部分 1.協議類型 https 2.主機名 www.zhihu.com (通過DNS解析出主機名) 3.端口號 圖中端口號為443

57. Python saltstack 二次開發2

http協議 class 方式 clas 調用 官網 創建 分享 tex 回顧上一節:grains 和 pillar 都是定義他們的屬性的grains 定義在minion端(定義完必須重啟minion,才能生效)pillar 定義在master端(無需重啟即可生效)sal

【AI基礎】python:openCV——圖像處理2

getTrackbarPos圖像處理練習 制作一個滑動條調色板,使用函數cv2.getTrackbarPos();cv2.creatTrackbar() import cv2 import numpy as np def nothing(x): pass img = np.zeros((300,5

Python第一周 學習筆記2

學習筆記習題解析 0.打印10以內偶數:位運算 for i in range(10): if not i & 0x01: print(i) 1.給定一個不超過5位的正整數,判斷其有幾位(使用input函數) 方法一:正常邏輯處理 a = int(input("Please e

基於Java語言構建區塊鏈—— 基本原型

java 分布式 程序員 後端引言 區塊鏈技術是一項比人工智能更具革命性的技術,人工智能只是提高了人類的生產力,而區塊鏈則將改變人類社會的生產關系,它將會顛覆我們人類社會現有的協作方式。了解和掌握區塊鏈相關知識和技術,是我們每位開發人員必須要去做的事情,這樣我們才能把握住這波時代趨勢的紅利。 本文將基於Jav

基於Java語言構建區塊鏈—— 工作量證明

分布式 java引言 在 上一篇 文章中,我們實現了區塊鏈最基本的數據結構模型,添加區塊以及和前一個區塊連接在一起。但是,我們的實現方式非常簡單,而真實的比特幣區塊鏈中,每一個區塊的添加都是需要經過大量的計算才可以完成,這個過程就是我們熟知的挖礦。 工作量證明機制區塊鏈最關鍵的一個思想就是,必須進行大量且困難