易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 3807|回复: 1
收起左侧

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

[复制链接]
发表于 2017-12-20 22:04:57 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 3 金钱 才能浏览
 楼主| 发表于 2017-12-20 22:16:14 | 显示全部楼层
Python自动化测试--一个简单的自动化测试脚本--批量执行测试用例6 O* q3 K0 h2 R

! y, }* C' ~% h. u: K3 Q#coding=utf-8
) w6 U+ ^4 R  Hfrom selenium import webdriver
" K9 p; `! o! `from selenium.webdriver.common.by import By
9 X' C/ _! {  N  y/ \+ S" Lfrom selenium.webdriver.common import keys
0 v: k; V) y  m) bfrom selenium.webdriver.support import select
- j7 t- y& G9 j( O6 e9 q" P) Zfrom selenium.common import exceptions
& E5 O: K2 w; a$ N* ^import unittest,time,re" |  b) l8 g# F3 C
class Baidu(unittest.TestCase):
9 p# e- \8 W) G, T4 c6 n    #setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。这里将浏览器的调用和URL的访问放到初始化部分。#
" V3 ~" I$ J& j) }    def setUp(self):
! s1 a6 U2 ^0 L- F        self.driver=webdriver.Firefox()
3 _* K/ R; o; Q3 b. r        self.driver.implicitly_wait(30)/ H, P0 U. j% m2 |3 ^7 ]0 a
        self.base_url='http://www.baidu.com/'
4 I; P. t' V0 I* b& F9 s, l3 P        self.verificationErrors=[]  #脚本运行时,错误的信息将被打印到这个列表中#& _5 v' j6 S  y. K4 B, ?
        self.accept_next_alert=True  #是否继续接受下一个警告#
9 [0 v7 u) K/ c- |0 j* x) m# W5 |9 A    #百度搜索用例4 p# O' J( S8 M2 p7 u" K) {
    def test_baidu_serch(self):' l3 X# v& a1 E
        driver=self.driver
4 P* }0 t3 ^$ @; I        driver.get(self.base_url)
% S( ^! ]/ m4 e7 v7 M- {0 l        driver.find_element_by_id("kw").send_keys("selenium webdriver")
6 [( J! u) s# F        driver.find_element_by_id("su").click()1 b7 H' t5 w, [  t  y) H! O
        time.sleep(2): Y$ O6 R2 L1 h1 W5 N* p
        driver.quit()! g8 A( B6 ~9 E# v. E. d
    #百度设置用例
/ x$ T7 i7 s1 D' k: z5 o    def test_baidu_set(self):! x$ Z4 ?& w$ \: t+ d1 W1 `. _# C# j
        driver=self.driver
( f6 w6 Q4 ?7 m4 {# U' |$ a        #进入搜索设置页9 G, P. \9 s  v8 ?) I
        driver.get(self.base_url+'gaoji/preferences.html')  
. e  `8 ~; K7 L6 F6 V; N        m=driver.find_element_by_name('NR')
8 `! H* E, n5 l3 O0 a  f        #设置每页搜索结果为100条,先找到ID=NR的标签,再找到ID=NR标签下的option标签value值等于100的选择按钮0 c8 R) a$ q- n2 U. [
        m.find_element_by_xpath("//option[@value='100']").click()0 ?2 l% {8 P8 y1 t, D+ J+ R
        time.sleep(2)
/ T9 O. r# Y. z; z7 S        #保存设置的信息
( T1 P6 q. E+ g9 o+ V# v  Q        driver.find_element_by_xpath("//input[@value='保存设置']").click()
! A$ ?6 C' z* k        time.sleep(2)- n+ B) \" l1 I) g1 a$ O
        n=driver.switch_to_alert()
2 X% d! T) J; U" T% v        n.accept()* Z2 @) c9 ^' Q; p
    def tearDown(self):+ ^8 a* r$ W* D  ?4 q2 E5 j! c
        self.driver.quit()! Q9 |& @2 d1 w% G0 t0 T- Q2 a0 k- k
        self.assertEqual([],self.verificationErrors)! o: Z1 i, \' h
        '''
6 u: n8 n2 N: J5 T6 z        tearDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出浏览器等。
* x3 q0 Q  m2 r( M6 u        self.assertEqual([], self.verificationErrors) 是个难点,% A' g; r* t% X* E! }5 {
        对前面verificationErrors方法获得的列表进行比较;如查verificationErrors的列表不为空,输出列表中的报错信息。'''
" \; p. u& H& b- M3 D0 n; Yif __name__=="__main__":5 p9 s7 c' g# t+ }
    unittest.main() #执行用例#* K# H4 L7 G2 X3 v/ Z  p8 A
# H! R/ T# m% E1 r" M' q- G7 R# f& b
'''
5 `7 P, ?* D! x/ ^( Q* r执行结果如下:( z+ j0 F4 Z2 A/ u  e
Ran 2 tests in 30.719s  执行测试完所有测试用例,用了70.719S
! @' \  I3 {& j  t) U: } ) Z. m' y& F( a. G# I
ok 没有问题
' F+ n( {. d9 ?
* Z: k* h" B6 ]0 c+ U5 V8 U如果你在用例中故意设置一个错误,例如:/ N# r; z/ ~9 O) k6 x! g% C& c
百度设置用例中增加这样一行代码,查找到name为DR的标签,并单击它,因为这个是没有的,找不到这个标签,系统会报错,. O6 G) ]/ b& A: \
driver.find_element_by_name('DR').click()7 P" }' {3 Z7 T- L% c% y
这时执行结果显示如下:6 H0 k+ O0 ^( L' \4 u
Ran 2 tests in 70.719s. p/ a. W9 O; \1 H8 I

' F( R7 \8 N: f3 kFAILED (errors=1)
4 G# {' D. d' p# ]$ f, Z: z0 y7 C'''
, q7 F3 F' J% n; L' Q; ^) }1 p& P) B4 M/ l. e& P
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-9 01:06 , Processed in 0.053474 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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