找回密码
 注册
查看: 3812|回复: 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自动化测试--一个简单的自动化测试脚本--批量执行测试用例9 H7 D2 f8 c5 k

1 `$ Q" |% L$ b0 F' ~, C) o9 M#coding=utf-8
8 ^2 ~& }' g2 J( l4 Hfrom selenium import webdriver
( T; G: ^3 C0 f% Efrom selenium.webdriver.common.by import By- u3 |) n0 q# Y9 t
from selenium.webdriver.common import keys
# Q- I+ \! W( s6 |/ t. g& X/ `3 ]from selenium.webdriver.support import select
8 s" v" g+ u" J& |5 J4 zfrom selenium.common import exceptions: L0 Q7 c1 G  Z( V4 a' J8 H
import unittest,time,re% s" d$ L; Y. Z' q
class Baidu(unittest.TestCase):' ?2 k% N) L$ R9 _/ s1 Z( Z& M
    #setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。这里将浏览器的调用和URL的访问放到初始化部分。#
$ P% p9 y# G4 Z1 r" B    def setUp(self): ; P0 Q% N4 f. T5 ~
        self.driver=webdriver.Firefox()5 _- ]0 B/ {3 S" r* }. b
        self.driver.implicitly_wait(30)
) ]! Y+ R+ U' p7 L3 m/ l& Q4 L% O! t8 O        self.base_url='http://www.baidu.com/'
, n( D4 j9 F" [6 c! \( a4 |        self.verificationErrors=[]  #脚本运行时,错误的信息将被打印到这个列表中#
1 d( h1 S5 s8 u$ h; \6 e        self.accept_next_alert=True  #是否继续接受下一个警告## u/ A) T4 K2 P5 h2 m% J; j0 a
    #百度搜索用例
- h$ N7 R& d8 L0 t  y0 C7 O    def test_baidu_serch(self):3 ^* S& }  |+ V0 g
        driver=self.driver( l9 e0 A: T* h$ K, L, y
        driver.get(self.base_url)
+ i- s( \* |$ V# ~7 B  P        driver.find_element_by_id("kw").send_keys("selenium webdriver")
! Z. c+ m% K1 i9 q5 N/ P+ r3 u' E        driver.find_element_by_id("su").click()
1 ]2 v! C( x6 z4 ]" D" D9 V- R        time.sleep(2)
5 B; u- G/ E' X; D: i, n        driver.quit()
; n4 `8 }1 |/ O' I  ~; w- c1 s    #百度设置用例
' S& f0 R) H# ?0 ~' }' Y    def test_baidu_set(self):
/ H+ P6 u8 x  E" Y" I/ |        driver=self.driver1 d! @- d' O: D, n' X: \
        #进入搜索设置页
" }- D; u* I- T        driver.get(self.base_url+'gaoji/preferences.html')  
  |; C- [% J1 Y6 E        m=driver.find_element_by_name('NR') ) F: ^# ]9 y; x5 z6 h& p
        #设置每页搜索结果为100条,先找到ID=NR的标签,再找到ID=NR标签下的option标签value值等于100的选择按钮
; u% f! M5 K. b6 ]        m.find_element_by_xpath("//option[@value='100']").click()2 v" n7 V( t0 F+ c. A; n
        time.sleep(2)
: J1 n7 B$ N9 r* v* E  A        #保存设置的信息/ {/ P* S) V) S  k
        driver.find_element_by_xpath("//input[@value='保存设置']").click()8 c2 P6 R8 A9 f4 o
        time.sleep(2)+ V0 t9 A; w4 }* T6 p
        n=driver.switch_to_alert()
& W" n0 V/ j3 k- c6 k9 Z+ Z        n.accept()
. r, }3 |* n+ d$ l    def tearDown(self):) g( S. o, _; H9 h
        self.driver.quit()+ z$ X+ Z1 \- K2 b) w
        self.assertEqual([],self.verificationErrors)' N- V) h# N: \5 p+ c. ]
        '''1 \+ |1 t- G& b4 F4 y8 b* _
        tearDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出浏览器等。 2 G2 x/ S( y/ m# a. P+ d! |
        self.assertEqual([], self.verificationErrors) 是个难点,, Q) w; x1 z2 V+ J- u* P# B9 W
        对前面verificationErrors方法获得的列表进行比较;如查verificationErrors的列表不为空,输出列表中的报错信息。'''
& P8 b- x7 k9 s6 g  Lif __name__=="__main__":1 B0 @: B$ Y# r: u
    unittest.main() #执行用例#$ a% [0 {1 C# g

: F. l, L' i$ d3 V; ~5 z'''! O% |7 Q, K+ N. Z5 q& X1 p# \
执行结果如下:( p8 Z/ Y7 o+ i, B
Ran 2 tests in 30.719s  执行测试完所有测试用例,用了70.719S5 [/ l. C( a+ ^$ C- t& h; Z
  j' T& ~% \5 y, j
ok 没有问题! K9 ?* f. y" e3 j3 M/ C9 m
( F/ |+ R3 p" R0 C3 H! m& U( Q0 C1 p
如果你在用例中故意设置一个错误,例如:' C2 Y) \4 y, Z3 x: @
百度设置用例中增加这样一行代码,查找到name为DR的标签,并单击它,因为这个是没有的,找不到这个标签,系统会报错,( U5 H7 ?1 \3 O9 Y
driver.find_element_by_name('DR').click()5 X, r6 }$ `/ Y5 o. V, h3 ?6 \
这时执行结果显示如下:
6 J+ G" V+ N; q3 U' C3 zRan 2 tests in 70.719s
! Z7 _# ]# i% |4 _& a
( p: q9 I9 ]+ j, x8 M% _0 RFAILED (errors=1)
2 U4 @9 P/ I" O( o9 d8 l''') a0 L5 p5 s- F8 w/ ]- a
; u  ]' j6 ?6 j* g1 x' ^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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