selenium+python脚本编写笔记(十三)

  • 关于公司环境是代理上网的情况下,如何进行脚本自动化测试内网系统以及发外网邮件
pac
proxy.pac内容
function FindProxyForURL(url, host) {
    // our local URLs from the domains below example.com don't need a proxy:
    if (shExpMatch(host, "想要测试的内网地址"))
    {
        return "DIRECT";
    }
 
    // URLs within this network are accessed through
    // port 8080 on fastproxy.example.com:
    if (isInNet(host, "www.baidu.com", "255.255.248.0"))
    {
        return "PROXY 代理IP:8080";
    }
 
    // All other requests go through port 8080 of proxy.example.com.
    // should that fail to respond, go directly to the WWW:
    return "PROXY 代理IP:8080; DIRECT";
 
记住修改IE设置后,重启IE才生效
 
发邮件类的函数加入如下代码
        socks.setdefaultproxy(socks.HTTP, "IP", 8080)
        socket.socket = socks.socksocket
       socks.wrapmodule(smtplib)
       smtp_server = smtplib.SMTP()
       smtp_server.connect('smtp.exmail.qq.com')
       smtp_server.set_debuglevel(1)
关闭代理的情况下,可以测试内网系统,也可以发外网邮件
 
  • 关于ddt使用的实践
test_data1 = [{"username": "wukong", "pwd": "wukong"},
 
             {"username": "wuneng", "pwd": "woneng"},
 
             {"username": "wujing", "pwd": "wujing"},
 
             ]
@ddt.ddt
class TestQddt(unittest.TestCase):
 
 
    @ddt.data(*test_data1)
    #@ddt.data('1111','2222')
    #@ddt.unpack         
    def test_search2(self,data):
    driver.find_element(*self.locator_txt).send_keys(data)
       
 
if __name__ == '__main__':
   
    #通过这个方式,可以执行成功#unittest.main()
 
    #通过这个方式,可以执行成功
    #suite = unittest.TestLoader().loadTestsFromTestCase(TestFormelQddt)
    #unittest.TextTestRunner(verbosity=2).run(suite)
 
    #按照一定格式获取当前时间
    now = time.strftime("%Y%m%d_%H%M%S")
    #将当前时间加入到报告文件名称中
    filename = now+'result.html'
    #定义测试报告存放路径
    #定义测试报告
    report= REPORT_PATH+'\\'+filename
    #report = REPORT_PATH + '\\report.html'
    with open(report, 'wb') as f:
        runner = HTMLTestRunner(f, verbosity=2, title='测试报告', description='采用自动化测试框架编写测试用例')
        suite = unittest.TestLoader().loadTestsFromTestCase(TestFormelQddt)
        runner.run(suite)
        #runner.run(TestFormelQddt('test_search2'))#通过这个方式,不能执行成功,报错:TestFormelQddt中没有test_search2
       
    e = Email(title='测试结果',
              message='今天的测试结果',
              receiver='',
              server='smtp.exmail.qq.com',
              sender='',
              password='',
              path=report
              )
    e.send()
-------------------------------------------------------------------------------
以下代码也可运行成功
 
import unittest
from ddt import ddt, data, unpack
import csv
from pprint import pprint
 
 
def add(a, b):
    print(a, b)
    c = a + b
    print(c)
    return c
 
def addstr(a, b):
    c = a + b
    return c
 
@ddt
class Test(unittest.TestCase):
    @data((1, 1, 2), (1, 2, 3))
    @unpack
    def test_addnum(self, a, b, expected_value):
        self.assertEqual(add(a, b), expected_value)
 
 
if __name__ == "__main__":
    suite = unittest.TestLoader().loadTestsFromTestCase(Test)
    unittest.TextTestRunner(verbosity=2).run(suite)
 
 
  • phantomjs

PhantomJS是一个可编程的无头浏览器.

无头浏览器:一个完整的浏览器内核,包括js解析引擎,渲染引擎,请求处理等,但是不包括显示和用户交互页面的浏览器。

from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy
from selenium.webdriver.common.proxy import ProxyType
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import random, string, os
proxy = Proxy(
{
'proxyType': ProxyType.MANUAL,
'httpProxy': IP:8080'
}
)
desired_capabilities = DesiredCapabilities.PHANTOMJS.copy()
 
proxy.add_to_capabilities(desired_capabilities)
driver = webdriver.PhantomJS(
executable_path="C:/Program Files/IBM/AppScan Standard/lib/phantomjs.exe",
desired_capabilities=desired_capabilities
)
driver.get('http://www.baidu.com/')
os.system("D:\\login2.exe")
driver.switch_to.default_content()
driver.switch_to.frame("leftFrame") 
 
driver.find_element_by_xpath("//ul[@id='navigation']/li[3]/a/div/div[2]").click()
 
driver.close()
 
  • 接口测试--基础概念解析
 
一个用户接口可以通过以下4种不同方式的请求,来做不同的事情:
  1. 获取用户信息
  2. 创建用户
  3. 修改用户
  4. 删除用户

        你完全可以像“灯”的那个例子,用GET请求来传递不同的参数来实现,但是这样如果接口多了,就会很混乱,很难管理。

这时,我们需要一种规则:

  1. 当用“GET”方式时,只用来获取数据,成功了返回http状态码200
  2. 当用“POST”方式时,只用来创建数据,成功了返回http状态码201
  3. 当用“PUT”方式时,只用来修改数据,成功了返回http状态码203
  4. 当用“DELETE”方式时,只用来删除数据,成功了返回http状态码204
  5. 当请求发送失败,返回http状态码400

这样子的规则,我们称它为“RESTful”标准。

接口测试的步骤:

  1. 拿到接口的url地址
  2. 查看接口是用什么方式发送
  3. 添加请求头,请求体
  4. 发送查看返回结果,校验返回结果是否正确

        这个是正常的一套流程,异常的情况,比如参数不传值呀,传的值不正确呀,明明要求用"GET"请求发送,偏要用"POST"请求发送呀等等。

postman下载

https://www.getpostman.com/apps









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值