学习【python 测试开发】

https://ke.qq.com/course/263945#tuin=107a3c8a

https://testerhome.com/topics/11327

python版本:2.7.*

第一节

python开发速度快,是因为开源模块多,我们站在了巨人的肩膀上,所以在实现某个功能的时候,先去python的仓库里看是否已实现。
开源仓库 http://pypi.python.org/pypi

GUI:指可视化图形工具

如果用python做性能测试,建议用工具有:Locust

 

python也可对java、cc++代码进行单元测试

 CSDN的登录操作,需要带‘lt’的值:

 

遇到的问题及解决办法:

1. ImportError: No module named 'requests'

https://www.baidu.com/link?url=oPgkXcZT5bticBF8uBDbKNtmkw6oHD8HlJ9K349MgNU7zPFSxF7ragT4Dk6mId41FLCaiZPExomWp5aX7aRVZ_&wd=&eqid=ba2d8ab700004b10000000065a548587

pip 安装中:

第三方库安装后,会在该目录下,也可查看修改

http://blog.csdn.net/huangzhang_123/article/details/64905767     python request使用介绍

python request模块通过模拟用户访问web网站,实际运用到Html的post,get的方法实现网站互动。

首先要找到post网址 
打开网页->按F12(找到网络(火狐为例))->随意输入帐号密码->点击登录 

按照上面的方法,获得CSDN登录按钮的form提交网址:

2.post请求似乎不成功,不知道header中User-Agent和accept是否正确,未解决???

#!/usr/bin/env python
#coding=utf-8

import requests
import sys

login_home_url="https://passport.csdn.net/account/login?ref=toolbar"
#创建一个session实例,session能记录你的登录账号信息(因为http是短链接,无法记录cookie)
# 之前的操作都是基于同一个session进行的,保持会话的有效性
web_sessions= requests.Session()
#打开登录页面
LoginPage = web_sessions.get(login_home_url)
print("line14")
# 获取响应的内容,以文本格式
print(LoginPage.text)
#获取当前页面上的元素:元素ltexecution的值
lt_sting = LoginPage.text[LoginPage.text.find('name="lt"'): LoginPage.text.find("/>",LoginPage.text.find('name="lt"'))]
print("lt_sting: ",lt_sting)
print("*"*30)
lt =  lt_sting[lt_sting.find("LT"):-2]
print("lt: ",lt)
exe_sting = LoginPage.text[LoginPage.text.find('name="execution"'): LoginPage.text.find("/>",LoginPage.text.find('name="execution"'))]
print("exe_sting: ",exe_sting)
execution =exe_sting[exe_sting.rfind('="')+2:-2]
print("execution: ",execution)


#提交的用户信息、submit的网站
login_url = "https://passport.csdn.net/account/verify"
userData ={"username":"…………@qq.com","password":"qa……","lt":lt,"execution":execution,"_eventId":"submit"}
#火狐浏览器User-Agent设置
headerstr= {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0","Accept": "text/html, application/xhtml+xml, */*"}
#提交post请求  
login_response = web_sessions.post(login_url,data=userData,headers=headerstr)
print(login_response.text)  #该post请求后响应的结果,不满足预期,待解决。。》》》》


# comment_url = "http://blog.csdn.net/fromsuny_smile/article/details/79014217"
# comment_headers= {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0","Accept": "*/*"}
# comment_payload ={"commentid":"","content":u"很好啦","replyId":""}
# comment_response = web_sessions.post(comment_url,data = comment_payload, headers =comment_headers)
# print(comment_response.text)
View Code

 --------------用appium和selenium进行用户操作的模拟,代码如下,如果有基础,很容易看懂的

appium登录豆瓣账号如下:

#!/usr/bin/env python
#coding=utf-8

from appium import webdriver
import time,sys

reload(sys)
sys.setdefaultencoding('utf-8')

usename="xxx"
passwd="xxx"
sleep_time =2

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0'
desired_caps['deviceName'] = 'Android Emulator'
#desired_caps['app'] = r"D:studycy	rainingcebacodesrcappiumdouban_117.apk"
desired_caps['appPackage'] = 'com.douban.frodo'
desired_caps['appActivity'] = '.MainActivity'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

driver.find_element_by_android_uiautomator('new UiSelector().text("我的")').click()

time.sleep(sleep_time)
#driver.find_element_by_android_uiautomator('new Uiseletor().resourceId("com.douban.frodo:id/title").textContains(u"我的")').click()
driver.find_element_by_id("com.douban.frodo:id/unlongin_name").click()
time.sleep(sleep_time)

usename_element = driver.find_element_by_id("com.douban.frodo:id/input_user_name")
usename_element.clear()
usename_element.send_keys(usename)

password_element = driver.find_element_by_id("com.douban.frodo:id/input_password")
password_element.clear()
password_element.send_keys(passwd)

driver.find_element_by_id("com.douban.frodo:id/sign_in_douban").click()
time.sleep(sleep_time)
appium+python

selenium登录微博如下:

#!/usr/bin/env python
# coding=utf-8

from selenium import webdriver
import unittest, time, re


class WeiboTestCase(unittest.TestCase):
    def setUp(self):
        print "2222"
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_untitled_test_case(self):
        driver = self.driver
        print "i ma here"
        driver.get("https://weibo.com/login.php")
        driver.find_element_by_id("loginname").click()
        driver.find_element_by_id("loginname").click()
        driver.find_element_by_id("loginname").clear()
        driver.find_element_by_id("loginname").send_keys("xxxxx")
        driver.find_element_by_name("password").clear()
        driver.find_element_by_name("password").send_keys("xxxx")
        driver.find_element_by_id("login_form_savestate").click()
        driver.find_element_by_xpath("//div[@id='pl_login_form']/div/div[3]/div[6]/a").click()
        driver.find_element_by_xpath("//textarea[@name='']").clear()
        driver.find_element_by_xpath("//textarea[@name='']").send_keys("Welcome to learn Python")
        driver.find_element_by_link_text(u"发布").click()

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)


if __name__ == "__main__":
    print "11111"
    unittest.main()
selenium登录微博

这里的入门级的代码,用作熟悉appium的使用
但如果作为企业级的自动化工具,要采用框架,例如把公共函数、方法提炼出来。


没有轻轻松松就能拿高工资,必须有大力的付出,
没有写过大量代码的测试开发,是没有生产力的。
提高自身代码量。

使用bing.com搜索
用英文关键字搜索
尽量看原英文文档

-----------------------------------------Have a good day!---------------------------------------------------------------------------------------------------
原文地址:https://www.cnblogs.com/ww-xiaowei/p/8136996.html