找回密码
 注册
查看: 3814|回复: 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自动化测试--一个简单的自动化测试脚本--批量执行测试用例6 Y! W5 @! p# N. `8 l/ H) W
5 m9 }' [1 k9 X  E- J+ @* W
#coding=utf-8" o: b" t# `9 G! }
from selenium import webdriver$ b* U5 i8 r' k6 n
from selenium.webdriver.common.by import By
1 Z$ T9 z- _. G0 ifrom selenium.webdriver.common import keys
6 c$ h& L4 w# f3 o  sfrom selenium.webdriver.support import select
+ V3 J5 S: F7 B- D$ U/ m3 P4 W1 S9 Nfrom selenium.common import exceptions
9 }5 ^! W4 [; Q! J) eimport unittest,time,re
6 k( K+ f. `: P1 _# N4 X0 jclass Baidu(unittest.TestCase):
) \  H% P' W2 j2 [) R; v    #setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。这里将浏览器的调用和URL的访问放到初始化部分。#. Q7 V- a# {  q
    def setUp(self):
1 X& x" Y; O0 U  M5 M        self.driver=webdriver.Firefox()3 |0 e  l, ]! c- }1 u" M
        self.driver.implicitly_wait(30)
. t: y+ [- e% ~- F6 s* x2 W        self.base_url='http://www.baidu.com/'
+ X) W* {0 G7 ]        self.verificationErrors=[]  #脚本运行时,错误的信息将被打印到这个列表中#
! D/ P( O! h+ N4 ?- s        self.accept_next_alert=True  #是否继续接受下一个警告#
' I* x* g4 A( z$ d/ ^% r    #百度搜索用例5 k( D3 C1 r; c* V) N
    def test_baidu_serch(self):
2 F2 C1 Z2 u  I7 g0 z        driver=self.driver* q/ y& X( J: V9 E9 c
        driver.get(self.base_url)- r  V7 D' z% }* Y: D9 X' h5 X1 d- D4 d
        driver.find_element_by_id("kw").send_keys("selenium webdriver"): `. i2 _5 V  {6 e' m. _6 l
        driver.find_element_by_id("su").click()
3 c  N5 W6 J# i  k: t) t, d        time.sleep(2)% K3 A4 G# l% W
        driver.quit()
: I& j2 q  w# s( p; r$ I) W5 ?    #百度设置用例
" i5 e4 Z9 [4 O$ B    def test_baidu_set(self):
! L- E& i! S. X, s* H9 }7 o        driver=self.driver
$ \2 V+ v! I6 l/ m( g  v        #进入搜索设置页. {. z9 ]! @) n
        driver.get(self.base_url+'gaoji/preferences.html')  
# p! `" n, l- ~) e: w        m=driver.find_element_by_name('NR')
4 h# z& T8 h% k, R3 A        #设置每页搜索结果为100条,先找到ID=NR的标签,再找到ID=NR标签下的option标签value值等于100的选择按钮9 ^' h5 P6 A5 a
        m.find_element_by_xpath("//option[@value='100']").click()
# X6 ~6 t, x5 V" z& i/ `* C        time.sleep(2)1 C6 X1 C4 ~  ~/ I0 C
        #保存设置的信息
* R' J, O+ R1 N  s( W        driver.find_element_by_xpath("//input[@value='保存设置']").click()
6 D' O" n1 d: l0 Z# b! j( m* K        time.sleep(2)) X" I4 U' c- F! Q2 Y3 U" _
        n=driver.switch_to_alert(); o: O  e0 r5 {
        n.accept()7 ]: }$ r0 y% b+ v6 x* p
    def tearDown(self):  C5 M2 Q# Z; y$ j( H9 o- o
        self.driver.quit()% P) B; S/ A5 t- B8 d
        self.assertEqual([],self.verificationErrors)
! J' M4 f7 ]0 h4 y9 c7 ^3 z        '''9 T3 y6 t5 t% l2 p" m( q  N
        tearDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出浏览器等。 9 W2 f& M; m$ r. j
        self.assertEqual([], self.verificationErrors) 是个难点,
) t2 p9 X5 l, o; D3 I7 N        对前面verificationErrors方法获得的列表进行比较;如查verificationErrors的列表不为空,输出列表中的报错信息。'''
7 g& {$ Y9 D2 e/ \( \8 Oif __name__=="__main__":* q* S* L, b) K% g6 V/ R2 U
    unittest.main() #执行用例#' _7 D, P" O2 |/ X1 Y1 Q& r
% c# }( v8 ^8 E: t
'''
  P" \% [! U2 W% J! c2 H执行结果如下:
" T; E4 Y3 Z- j! tRan 2 tests in 30.719s  执行测试完所有测试用例,用了70.719S6 u" F3 v; c: M3 V! q9 y

' l; n9 n0 o' M7 h% p+ x+ I% qok 没有问题
* E1 x5 y' o) w0 l
. C4 v6 p" d6 u如果你在用例中故意设置一个错误,例如:
" E4 [! C* y7 V7 G5 E4 B百度设置用例中增加这样一行代码,查找到name为DR的标签,并单击它,因为这个是没有的,找不到这个标签,系统会报错,) D: S! N5 Z: K0 e
driver.find_element_by_name('DR').click()7 z& V( K) m! ?9 R6 W
这时执行结果显示如下:
3 v3 ^, ?' h/ C. o  v7 l( O" bRan 2 tests in 70.719s) T6 w5 S& B: W6 k  L5 n! d. E

/ d( u- ]: X& l1 qFAILED (errors=1)
( ~8 T' o/ r0 ^! {/ X) ?'''
9 r8 g$ I! b" `% H+ p$ i+ a
: a+ Z) D, y6 l; G% }( _
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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