找回密码
 注册
查看: 3813|回复: 1

利用python实现批量自动化运维脚本案例

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2017-12-20 22:04:57 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 3 金钱 才能浏览

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2017-12-20 22:16:14 | 显示全部楼层
Python自动化测试--一个简单的自动化测试脚本--批量执行测试用例, m( f& R0 ]5 w+ M

2 p  y* n9 `- O: E5 U#coding=utf-80 f, V) g: G! A, n- O- q
from selenium import webdriver; S# f& i5 v( k) u5 |
from selenium.webdriver.common.by import By
/ ]" p' c7 y1 {0 B( h# zfrom selenium.webdriver.common import keys8 M$ b, F2 w7 D- ^/ \0 O
from selenium.webdriver.support import select. i; F/ c( C+ _6 g
from selenium.common import exceptions( [' x2 ?$ C! g$ i3 s8 D
import unittest,time,re1 |6 _" {) ~, z% p' X; ?/ V3 _
class Baidu(unittest.TestCase):- a" _( G: e7 T, h& w
    #setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。这里将浏览器的调用和URL的访问放到初始化部分。#* u. \8 L9 L1 P
    def setUp(self):
- Q" m' [( \5 Q3 }6 W& C3 O        self.driver=webdriver.Firefox()" e4 `+ r8 ^0 l1 E0 {% P
        self.driver.implicitly_wait(30)
" `  h; B& v$ D        self.base_url='http://www.baidu.com/'( `7 I+ \. ~- m7 T2 r
        self.verificationErrors=[]  #脚本运行时,错误的信息将被打印到这个列表中#& X; y6 a6 p$ M7 w, a
        self.accept_next_alert=True  #是否继续接受下一个警告#
: j" i' Z0 @, m: O$ u) m" `4 q+ L7 L    #百度搜索用例
8 q( e/ W+ E8 a- _% T    def test_baidu_serch(self):. x& l) ?* k" }' L
        driver=self.driver. G" z5 F& j' s! U& V+ G# L
        driver.get(self.base_url)
( N" ?, }& h5 {: r        driver.find_element_by_id("kw").send_keys("selenium webdriver")
7 y# [; c' v2 p0 l4 K        driver.find_element_by_id("su").click()
) v" w' {; I( Q        time.sleep(2)
7 r" f- j! ~$ i! [7 b1 L. _        driver.quit()/ E; C, `" W& V1 I  e! `' ]
    #百度设置用例7 w9 x8 ?8 D/ F0 T8 H( y* C! T
    def test_baidu_set(self):( _( ^1 ^; b5 J$ a5 _6 y
        driver=self.driver* F; B2 H; N; R2 [  ^* Y9 ?
        #进入搜索设置页$ }- b/ c: I; v5 l* d$ k! X
        driver.get(self.base_url+'gaoji/preferences.html')  + H" r$ O2 p6 ?' u& z
        m=driver.find_element_by_name('NR')
- K% s" G+ U, I        #设置每页搜索结果为100条,先找到ID=NR的标签,再找到ID=NR标签下的option标签value值等于100的选择按钮
6 @' U1 a' `$ l! C        m.find_element_by_xpath("//option[@value='100']").click()4 e# d; t' Q* j9 x( K
        time.sleep(2)
9 j, t- e1 J7 u9 [* Q        #保存设置的信息
# l/ \6 s$ v. I$ M4 T1 s2 b        driver.find_element_by_xpath("//input[@value='保存设置']").click()# e$ h+ m; Q- R# z5 f7 d1 [
        time.sleep(2)  z6 t: v9 J% S: [# c
        n=driver.switch_to_alert()4 d6 N* v* s+ z/ ?
        n.accept(). J4 b& G+ H' B4 j- n* I' u
    def tearDown(self):- c; K# E# G. u- H5 [
        self.driver.quit()
$ g- T  ~  T5 g  G7 e        self.assertEqual([],self.verificationErrors): D5 }. d" e9 S
        '''
5 ]! o& q, I" Y8 d. O& s        tearDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出浏览器等。
! x9 t0 x) }7 V        self.assertEqual([], self.verificationErrors) 是个难点,
# G# u2 e9 i3 i  u        对前面verificationErrors方法获得的列表进行比较;如查verificationErrors的列表不为空,输出列表中的报错信息。'''
- s) m$ Z# x7 ~9 {. Q) c  O) Oif __name__=="__main__":
$ t0 m+ `! z) ~    unittest.main() #执行用例#8 n. X5 Z4 g; B+ m" [0 f
1 |: j8 ~. L4 k- W2 C7 p
'''# j* G; V0 K' w$ i( i
执行结果如下:: g; w3 r1 ]9 ]: b+ P
Ran 2 tests in 30.719s  执行测试完所有测试用例,用了70.719S( e4 N! Q" |1 T. T. ?( }( Y

) N2 u" K; c4 G. B: Jok 没有问题4 a! ]& M9 f. g  a. L) x: \
2 q3 I# o8 K" n& G
如果你在用例中故意设置一个错误,例如:6 |  d4 _6 _# t. z- P1 U
百度设置用例中增加这样一行代码,查找到name为DR的标签,并单击它,因为这个是没有的,找不到这个标签,系统会报错,
  \  t/ V5 [  L$ P* ?8 Pdriver.find_element_by_name('DR').click(), ?4 ^0 W7 F5 U' U0 A; ^; }' ?
这时执行结果显示如下:
- _6 ^- I. z( u9 l9 V' xRan 2 tests in 70.719s$ c9 X! y; w* @" F' V+ n, a% V$ P

5 K0 R4 u/ s# t7 DFAILED (errors=1)
* P3 p( |- T- \/ w2 ^  s  u* H'''
8 H4 f# T: c1 m6 p& _
* u$ ~- l9 {* y4 C9 Y# L3 V
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 03:02 , Processed in 0.024976 second(s), 25 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表