Personal python practice

python language learning and reptiles from zero
for cycle training:
`for i in the Range (0,4):
Print (" i = ", i)
S = 3
for i in the Range (1,5,2):
S = S I +
Print ( "= I", I)
Print ( "= S", S)

s=0

for i in range(5,1,-1):
s=s+i
print(“i=”,i)
print(“s=”,s)
for i in range(1,4):
for j in range(1,3):
print(i,j)`

Print multiplication table:

for i in range(1,10):
    for j in range(1,i+1):
        result=i*j
        print(j,"*",i,"=",result," ","\t",end="")
    print(" ")

Bubble sort algorithm:

for i in range(1,10):
    for j in range(1,i+1):
        result=i*j
        print(j,"*",i,"=",result," ","\t",end="")
    print(" ")

Binary search algorithm:

def search(a,ls):
    left = 0
    n = len(ls)
    right = n - 1
    mid = (left + right) // 2
    while (left <= right):
        if (a > ls[mid]):
            left = mid + 1
        elif (a < ls[mid]):
            right = mid - 1
        else:
            #print("找到数字为", a)
            return 1
        mid = (left + right) // 2
        print("新的中间位置为", mid, "中间数为", ls[mid])
    #if (left > right):
        #print("没有找到该数字")
    return 0

a=int(input("输入一个数"))
ls=[1,3,4,7,9,23]
result=search(a,ls)
if(result==0):
    print("该数不存在")
else:
    print("该数存在")

Intensive training:

'''
#M与N数学运算
#加法类
class addClass:
    def __init__(self,a,b):
        self.a1=a
        self.a2=b
    def add(self):
        res=self.a1+self.a2
        return res
#减法类
class minusClass:
    def __init__(self,a,b):
        self.a1=a
        self.a2=b
    def minus(self):
        res=self.a1-self.a2
        return res
#乘法类
class multiplyClass:
    def __init__(self,a,b):
        self.a1=a
        self.a2=b
    def multiply(self):
        res=self.a1*self.a2
        return res
#幂次类
class powerClass:
    def __init__(self,a,b):
        self.a1 = a
        self.a2 = b
    def pow(self):
        res=self.a1**self.a2
        return res
#余数类
class remainClass:
    def __init__(self,a,b):
        self.a1 = a
        self.a2 = b
    def remain(self):
        res=self.a1%self.a2
        return res
#比较大小类
class biggerClass:
    def __init__(self,a,b):
        self.a1 = a
        self.a2 = b
    def bigger(self):
        if(self.a1>self.a2):
            res=self.a1
        else:
            res=self.a2
        return res
if __name__=='__main__':
    print("请输入M:")
    M=int(input())
    print("请输入N:")
    N=int(input())
    obj1=addClass(M,N)
    obj2=minusClass(M,N)
    obj3=multiplyClass(M,N)
    obj4=powerClass(M,N)
    obj5=remainClass(M,N)
    obj6=biggerClass(M,N)
    res1=obj1.add()
    res2=obj2.minus()
    res3=obj3.multiply()
    res4=obj4.pow()
    res5=obj5.remain()
    res6=obj6.bigger()
    print("两数之和是:",res1)
    print("两数之差是:",res2)
    print("两数之积是:",res3)
    print("M的N次幂是:",res4)
    print("M除N的余数是:",res5)
    print("两数较大的是:",res6)

#计算矩形面积
#计算面积类
class areaClass:
    def __init__(self,a,b):
        self.a1=a
        self.a2=b
    def area(self):
        s=self.a1*self.a2
        return s
if __name__=='__main__':
    print("请输入矩形的长:")
    a=int(input())
    print("请输入矩形的宽:")
    b=int(input())
    Area=areaClass(a,b)
    res=Area.area()
    print("矩形的面积是:",res)
'''

'''
    
#求所有三位水仙花数
print("三位水仙花数有:")
for i in range(1,1000):
    a=i%100%10
    b=i%100//10
    c=int(i/100)
    res=a**3+b**3+c**3
    if(res==i):
        print(i)
        
#100以内斐波那契数列
def fib(n):
    a,b=1,1
    for i in range(n):
        print(a)
        a,b=b,a+b
        if(a>n):
            break
fib(100)

#计算1+2+...+ 99+100
def cal(n):
    j=1
    for i in range(2,n):
        j=i+j
    print(j)
cal(101)

#求1~100所有偶数的和
j=2
i=4
while(i<101):
    j=i+j
    i=i+2
print(j)

#比较两数大小
class biggerClass:
    def __init__(self,a,b):
        self.a1=a
        self.a2=b
    def bigger(self):
        if(self.a1>self.a2):
            res=self.a1
        else:
            res=self.a2
        return res
if __name__=='__main__':
    print("请输入第一个数:")
    i=input()
    print("请输入第二个数:")
    j=input()
    obj=biggerClass(i,j)
    res=obj.bigger()
    print("两数中较大的是:",res)
    
#四个数字组成三位数
for a in range(1,5):
    for b in range(1,5):
        for c in range(1,5):
                if(a!=b and a!=c and b!=c):
                    res=a*100+b*10+c
                    print(res)
            
#球体落地
class BallClass:
    def __init__(self,n,m):
        self.n=n  #第n次落地
        self.m=m  #从m米落下
    #计算共经过多少米
    def mile(self):
        if(self.n==1):
            mi=self.m
        if(self.n==2):
            mi=self.m*2
        if(self.n>2):
            add=0
            for i in range(1,self.n-1):
                add=add+self.m/(2*i)
            mi=add+self.m*2
        return mi
    #计算反弹多高
    def high(self):
        hig=self.m/(2**self.n)
        return hig
if __name__=='__main__':
    miobj=BallClass(10,100)
    res1=miobj.mile()
    print("球在第十次落地时共经过",res1,"米")
    res2=miobj.high()
    print("第十次反弹",res2,"米高")
'''

Use crawlers get recruitment website Jobs View

import requests
from lxml import etree
from spider.spiderv2 import spider_v2
class spider_v3(spider_v2):
    def __init__(self):
        spider_v2.__init__(self,url)
    def position(self,spage):
        for j in range(4,54):
            dic={}
            document=etree.HTML(spage)
            element=document.xpath('//*[@id="resultList"]/div['+str(j)+']/span[1]/a/text()')
            dic['公司名'] = element
            print(dic,end="")
            for i in range(2,5):
                dic1={}
                lis=['','','地点','月薪','发布日期']
                element=document.xpath('//*[@id="resultList"]/div['+str(j)+']/span['+str(i)+']/text()')
                dic1[lis[i]]=element
                print(dic1,end="")
            print("")
 if __name__=='__main__':
    url='https://search.51job.com/list/000000,000000,0000,00,9,99,%25E8%25BD%25AF%25E4%25BB%25B6%25E6%25B5%258B%25E8%25AF%2595,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='
    spider3obj=spider_v3()
    spider3obj.url=url
    res=spider3obj.submit_get(spider3obj.url)
    pos=spider3obj.position(res)

Locust carried out using electronic business platform performance testing
sign-on feature single-point test

#对登录功能进行单点性能测试(多组测试数据:从CSV文件中读取)
from locust import HttpLocust,task,TaskSet
import csv
#定义测试类:用户行为
class UserBehavior(TaskSet):
    #指定测试任务
    @task
    def test_page(self):
        #定义登录测试数据
        file = open("userdata.csv", "r")
        tables = csv.reader(file)
        for rows in tables:
            print(rows[0])
            print(rows[1])
            logindata={"login_info":rows[0],"password":rows[1]}
        #发送首页请求给服务器post
            self.client.post("/index.php?controller=simple&action=login",data=logindata)
class WebSiteUser(HttpLocust):
    host="http://localhost/iwebshop/"
    task_set = UserBehavior
    min_wait = 2000
    max_wait = 5000

Using correlation techniques for testing

#针对关联技术,不登录直接访问用户账户,进行性能测试
from locust import HttpLocust,task,TaskSet
from gevent._semaphore import Semaphore
all_locusts_spawned=Semaphore()
all_locusts_spawned.acquire()
class UserBehavior_mycount(TaskSet):
    def on_start(self):
        all_locusts_spawned.wait()
    @task
    def test_mycount(self):
        head={
            'Cookie': 'iweb_username=dc2a6bf586MDI0MDAwMDk1MGBnYTBrZGA4Yj1rNjczNmZkaGYxMjB0YnN9OTk; iweb_safecode=d9f9d34ab0MDA3NTAwMDkwMGw%2FPDdjMGJrY2RhMWY3NmFhZTM1YDMxNGVlMGViMDY2NzBmMjQ1MDIyOTExZGFkNzRhMWU4ZA; iweb_user_pwd=46d95e3167MDA2NzI1MDA2MzdjZDk2MGU7M2FhMTZiPmVlMmczNzY5P2U3PDIxPjg2PWRiNzJjOzJhNTQ%2FZWQ9YDoyMDE1Ng; iweb_user_id=4d30fde333MDAwODY4NTkwMDBiODM%2FMGE%2FYjhjO2FmZ2NmNTtoMDM3NjQ; iweb_head_ico=d6fd9a9140MDU1NDIwOTQ4MDM0Yj4yMTVjZzU6Njk5ZWJmPGQ3MTE; PHPSESSID=fskkbo8jmjgparlcif5lprird1',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'}
        response = self.client.get("/index.php?controller=ucenter", headers=head).text
        print(response)
class webSiteUser(HttpLocust):
    host = "http://localhost/iwebshop/"
    task_set = UserBehavior_mycount
    min_wait = 2000
    max_wait = 5000

Single point registration function test

#针对注册功能进行性能测试
from locust import HttpLocust,task,TaskSet
class UserBehavior_reg(TaskSet):
    @task
    def test_reg(self):
        #构造测试数据
        for i in range(10,21):
            user="test"+str(i)
            regdata = {"email": user+"@51testing.com",
                           "username": user,
                           "password": "111111",
                           "repassword": "111111",
                           "captcha": "11111",
                           "callback": "?controller=simple&action=login"}
            response=self.client.post("/index.php?controller=simple&action=reg_act",data=regdata).text
            loc=response.find("恭喜")
            if loc>=0:
                print(user+"测试成功")
            else:
                print(user+"测试失败")
class webSiteUser(HttpLocust):
    host = "http://localhost/iwebshop"
    task_set = UserBehavior_reg
    min_wait = 2000
    max_wait = 5000

Single-point query function test

#针对查询功能进行性能测试
from locust import HttpLocust,task,TaskSet
from gevent._semaphore import Semaphore
import requests
import datetime
import csv
import os
from lxml import etree
all_locusts_spawned=Semaphore()
all_locusts_spawned.acquire()
class UserBehavior_search(TaskSet):
    def on_start(self):
        all_locusts_spawned.wait()
    def createdata(self):
        result1 = os.path.exists("searchdata.csv")
        if result1:
            os.remove("searchdata.csv")
        datafile = open("searchdata.csv", "w")
        response1 = requests.get("http://localhost/iwebshop/index.php?controller=site&action=sitemap").text
        doc = etree.HTML(response1)
        for i in range(1, 6):
            keyword = doc.xpath('/html/body/div[1]/div[6]/div[2]/div[3]/table[' + str(i) + ']/tbody/tr[2]/td/a/text()')
            for ele in keyword:
                datafile.write(str(ele) + "\n")
        datafile.close()
    @task
    def test_search(self):
        file=open("searchdata.csv","r")
        file2=open("searchresult.csv","a")
        rows=csv.reader(file)
        for word in rows:
            #print(word)
            response=self.client.get("/index.php?controller=site&action=search_list&word="+str(word)).text
            loc = response.find(str(word))
            te=datetime.datetime.now()
            if loc >= 0:
                #print(str(word)+"测试成功")
                result=str(te)+str(word)+"测试成功"
                file2.write(result+"\n")
            else:
                #print(str(word)+"测试失败")
                result =str(te)+str(word)+"测试失败"
                file2.write(result+"\n")
        file2.close()
class webSiteUser(HttpLocust):
    host = "http://localhost/iwebshop"
    result2 = os.path.exists("searchresult.csv")
    if result2:
        os.remove("searchresult.csv")
    task_set = UserBehavior_search
    min_wait = 2000
    max_wait = 5000

Mixed service test

#进行登录+查询的业务场景性能测试
from locust import HttpLocust,task,TaskSet
import csv
class UserBehavior_workflow1(TaskSet):

    #登录任务
    @task(2)
    def test_login(self):
            #定义登录测试数据
        for i in range(1,101):
            username="dabai"+str(i)
            logindata={"login_info":username,"password":"123456"}
            #发送首页请求给服务器post
            response=self.client.post("/index.php?controller=simple&action=login_act",data=logindata).text
            #print(response)
            loc=response.find(username)
            if loc>-1:
                print(username+"登录测试成功")
            else:
                print(username+"登录测试失败")
    #查询任务
    @task(3)
    def test_search(self):
        file = open("searchdata.csv", "r")
        file2 = open("searchresult.csv", "w")
        rows = csv.reader(file)
        for word in rows:
            # print(word)
            response = self.client.get("/index.php?controller=site&action=search_list&word=" + str(word)).text
            loc = response.find(str(word))
            if loc >= 0:
                # print(str(word)+"测试成功")
                result = str(word) + "测试成功"
                file2.write(result + "\n")
            else:
                # print(str(word)+"测试失败")
                result = str(word) + "测试失败"
                file2.write(result + "\n")
        file2.close()
    #tasks = {test_login:1,test_search:3}
    #注册任务
    @task(1)
    def test_reg(self):
        # 构造测试数据
        for i in range(31, 41):
            user = "test" + str(i)
            regdata = {"email": user + "@51testing.com",
                       "username": user,
                       "password": "111111",
                       "repassword": "111111",
                       "captcha": "11111",
                       "callback": "?controller=simple&action=login"}
            response = self.client.post("/index.php?controller=simple&action=reg_act", data=regdata).text
            loc = response.find("恭喜")
            if loc >= 0:
                print(user + "测试成功")
            else:
                print(user + "测试失败")

class webSiteUser(HttpLocust):
    host = "http://localhost/iwebshop/"
    task_set = UserBehavior_workflow1
    min_wait = 2000
    max_wait = 5000

Automated testing using selenium
were bing search

#1.打开浏览器
from selenium import webdriver
chrome=webdriver.Chrome()
#2.打开bing网站
chrome.get("https://cn.bing.com/")
#3.输入关键词
chrome.find_element_by_id("sb_form_q").send_keys("51testing")
#4.点击搜索按钮
chrome.find_element_by_id("sb_form_go").click()
#5.检查搜索结果

JD shopping mall

#自动化进行一次京东商城购物
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.select import Select

jing=webdriver.Chrome()
jing.implicitly_wait(15)
jing.get("https://www.jd.com/")
jing.find_element_by_id("key").send_keys("iphone")
jing.find_element_by_class_name("button").click()
jing.find_element_by_xpath("//*[@id='J_goodsList']/ul/li[1]/div/div[1]/a/img").click()
new_window=jing.window_handles[-1]
jing.switch_to.window(new_window)
jing.find_element_by_link_text("加入购物车").click()
jing.find_element_by_id("GotoShoppingCart").click()
#鼠标悬停操作
move=jing.find_element_by_class_name("ui-area-text")
ActionChains(jing).move_to_element(move).perform()
sheng=jing.find_element_by_class_name("ui-area-current").click()

Electricity supplier shopping platform test

import time

from selenium import webdriver
from selenium.webdriver.support.select import Select

driver=webdriver.Chrome()
#隐式等待
driver.implicitly_wait(10)
#窗口最大化
driver.maximize_window()
#1.登录
driver.get("http://127.0.0.1/index.php?m=user&c=public&a=login")
driver.find_element_by_id("username").send_keys("test")
driver.find_element_by_id("password").send_keys("111111")
driver.find_element_by_class_name("login_btn").click()
#2.点击“进入商城购物”
#第三种元素定位方法:id,classname,linktext
#导包快捷键alt+enter
#第四种方法:by_name
#优先顺序:id->name->classname-><a>才适合linke_text()
time.sleep(3)
driver.find_element_by_link_text("进入商城购物").click()
driver.find_element_by_name("keyword").send_keys("iphone")
driver.find_element_by_class_name("btn1").click()
#3.搜索iphone
#第五种元素定位方法:比较万能的方法xpath
driver.find_element_by_xpath("/html/body/div[3]/div[2]/div[3]/div/div[1]/a/img").click()
#切换到新窗口
#5.1找到新窗口名字
new_window=driver.window_handles[-1]
#5.2切换到新窗口
driver.switch_to.window(new_window)
#加入购物车
driver.find_element_by_id("joinCarButton").click()
driver.find_element_by_class_name("shopCar_T_span3").click()
#点击结算
#driver.find_element_by_class_name("shopCar_btn_03")
#第六种元素定位方法:css selector 最重要的一种方法
driver.find_element_by_css_selector(".shopCar_btn_03.fl").click()
#添加新地址
driver.find_element_by_class_name("add-address").click()
#收货人姓名
driver.find_element_by_name("address[address_name]").send_keys("lkx")
#手机号
driver.find_element_by_name("address[mobile]").send_keys("13344673345")
#收货地址-省
sheng=driver.find_element_by_id("add-new-area-select")
Select(sheng).select_by_visible_text("山西省")
#选择收货地址-市
shi=driver.find_elements_by_class_name("add-new-area-select")[1]
Select(shi).select_by_visible_text("大同市")
#选择地区
qv=driver.find_elements_by_tag_name("select")[2]
Select(qv).select_by_visible_text("市辖区")
driver.find_element_by_class_name("add-new-name-span-2").send_keys("无")
driver.find_element_by_class_name("add-new-name-span-3").send_keys("100000")
driver.find_element_by_class_name("aui_state_highlight").click()

Electronic business platform to modify personal information

import time

from selenium import webdriver
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait

driver=webdriver.Chrome()
driver.implicitly_wait(10)
driver.maximize_window()
driver.get("http://127.0.0.1/index.php?m=user&c=public&a=login")
driver.find_element_by_id("username").send_keys("test")
driver.find_element_by_id("password").send_keys("111111")
#submit方法,类似于click,只能用于form表单中
driver.find_element_by_id("password").submit()
#这里submit方法就代替了定位登录按钮并点击的操作
#点击账号设置
driver.find_element_by_link_text("账号设置").click()
#点击个人资料
#选择部分链接文本
driver.find_element_by_partial_link_text("人资").click()
#修改姓名
driver.find_element_by_id("true_name").clear()
driver.find_element_by_id("true_name").send_keys("培养基")
driver.find_element_by_css_selector('[value="1"]').click()
#也可driver.find_element_by_css_selector("[value='1']")
#删除readonly属性
script='document.getElementById("date").removeAttribute("readonly")'
driver.execute_script(script)
#在生日输入框中输入新的生日
#清空默认值
driver.find_element_by_id("date").clear()
driver.find_element_by_id("date").send_keys("1980-02-02")
driver.find_element_by_id("qq").clear()
driver.find_element_by_id("qq").send_keys("690690797")
driver.find_element_by_css_selector('[value="确认"]').click()
#弹出框处理
#智能等待之显式等待
WebDriverWait(driver,30,0.5).until(expected_conditions.alert_is_present())
update_status=driver.switch_to.alert.text
print(update_status)
driver.switch_to.alert.accept()

Electricity supplier management background add products

#打开后台登录页面
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait

driver=webdriver.Chrome()
driver.implicitly_wait(5)
driver.maximize_window()
driver.get("http://127.0.0.1/index.php?&m=admin&c=public&a=login")
#输入用户名、密码
driver.find_element_by_name("username").send_keys("admin")
driver.find_element_by_name("userpass").send_keys("password")
driver.find_element_by_name("userverify").send_keys("1234")
driver.find_element_by_class_name("Btn").click()
driver.find_element_by_link_text("商品管理").click()
driver.find_element_by_link_text("添加商品").click()
#输入商品名称
#driver.find_element_by_name("name").send_keys("iphone xs max")
#driver.find_element_by_xpath("/html/body/div[2]/div[2]/dl/form/dd[1]/ul/li[1]/input").send_keys("iphone xs max")
#把selenium切换到子页面中
driver.switch_to.frame("mainFrame")
driver.find_element_by_name("name").send_keys("iphone xs max")
#选择商品分类
driver.find_element_by_id("1").click()
driver.find_element_by_id("2").click()
driver.find_element_by_id("6").click()
# driver.find_element_by_id("7").click()
ActionChains(driver).double_click(driver.find_element_by_id("7")).perform()
brand=driver.find_element_by_name("brand_id")
Select(brand).select_by_value("1")
#添加商品图片
driver.find_element_by_link_text("商品图册").click()
# driver.find_element_by_css_selector("#filePicker label").click()
#driver.find_element_by_class_name("button_search").click()
driver.find_element_by_name("file").send_keys("C:/Users/69569/Pictures/1.jpg")
driver.find_element_by_css_selector(".uploadBtn.state-finish.state-ready").click()
#处理弹出框
WebDriverWait(driver,30,0.5).until(expected_conditions.alert_is_present())
driver.switch_to.alert.accept()
driver.find_element_by_class_name("button_search").click()

Automated testing framework to practice
BaseTestCase

import unittest2
from selenium import webdriver
class BaseTestCase(unittest2.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver=webdriver.Chrome()
        cls.driver.maximize_window()
        cls.driver.implicitly_wait(10)
    def switch_window(self):
        new_window=self.driver.window_handles[-1]
        self.driver.switch_to.window(new_window)
    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

Test Case

import time

import unittest2
from auto_test_frame.testcases.BaseTestCase import BaseTestCase
from selenium.webdriver import ActionChains
from selenium.webdriver.support.select import Select
class AddGoodsTest(BaseTestCase):
    def test_addgoods(self):
        self.driver.get("http://127.0.0.1/index.php?&m=admin&c=public&a=login")
        self.driver.find_element_by_name("username").send_keys("admin")
        self.driver.find_element_by_name("userpass").send_keys("password")
        self.driver.find_element_by_name("userverify").send_keys("1234")
        self.driver.find_element_by_class_name("Btn").click()
        self.driver.find_element_by_link_text("商品管理").click()
        self.driver.find_element_by_link_text("添加商品").click()
        self.driver.switch_to.frame("mainFrame")
        self.driver.find_element_by_name("name").send_keys("iphone13")
        self.driver.find_element_by_id("1").click()
        self.driver.find_element_by_id("2").click()
        self.driver.find_element_by_id("6").click()
        ActionChains(self.driver).double_click(self.driver.find_element_by_id("7")).perform()
        brand=self.driver.find_element_by_name("brand_id")
        Select(brand).select_by_value("1")
        self.driver.find_element_by_class_name("button_search").click()
        time.sleep(3)
        new_good=self.driver.find_element_by_xpath("//*[@id='datagrid-row-r1-2-0']/td[1]/div").text
        self.assertEqual("iphone13",new_good)


import time

from auto_test_frame.testcases.BaseTestCase import BaseTestCase
class AddVIPTest(BaseTestCase):
    def test_addvip(self):
        self.driver.get("http://localhost/index.php?m=admin&c=public&a=login")
        self.driver.find_element_by_name("username").send_keys("admin")
        self.driver.find_element_by_name("userpass").send_keys("password")
        self.driver.find_element_by_name("userverify").send_keys("1234")
        self.driver.find_element_by_class_name("Btn").click()
        self.driver.find_element_by_link_text("会员管理").click()
        self.driver.find_element_by_link_text("添加会员").click()
        self.driver.switch_to.frame("mainFrame")
        self.driver.find_element_by_name("username").send_keys("testvip3")
        self.driver.find_element_by_name("mobile_phone").send_keys("13333765589")
        self.driver.find_element_by_css_selector("[value='1']").click()
        self.driver.find_element_by_id("birthday").send_keys("2020-02-01")
        self.driver.find_element_by_name("email").send_keys("[email protected]")
        self.driver.find_element_by_name("qq").send_keys("444856473")
        self.driver.find_element_by_class_name("button_search").click()
        time.sleep(2)
        new_vip=self.driver.find_element_by_xpath("//*[@id='datagrid-row-r1-2-0']/td[1]/div").text
        print(new_vip)


import unittest2
import ddt
from auto_test_frame.func.CSVFileReader import reader
from auto_test_frame.testcases.BaseTestCase import BaseTestCase
@ddt.ddt
class RegisterTest(BaseTestCase):
    table=reader("registerdata.csv")
    @ddt.data(*table)
    def test_register(self,row):
        self.driver.get("http://127.0.0.1/index.php?m=user&c=public&a=reg")
        self.driver.find_element_by_name("username").send_keys(row[0])
        self.driver.find_element_by_name("password").send_keys(row[1])
        self.driver.find_element_by_name("userpassword2").send_keys(row[2])
        self.driver.find_element_by_name("mobile_phone").send_keys(row[3])
        self.driver.find_element_by_name("email").send_keys(row[4])
        self.driver.find_element_by_class_name("reg_btn").click()
        welcome = self.driver.find_element_by_css_selector(".site-nav-right.fr>a:nth-child(1)").text
        self.assertEqual("您好 "+row[0], welcome)


import time
import unittest2
import ddt
from auto_test_frame.func.CSVFileReader import reader
from auto_test_frame.testcases.BaseTestCase import BaseTestCase
@ddt.ddt
class LoginTest(BaseTestCase):
    table=reader("logindata.csv")
    @ddt.data(*table)
    def test_login(self,row):
        self.driver.get("http://127.0.0.1/index.php?m=user&c=public&a=login")
        self.driver.find_element_by_id("username").send_keys(row[0])
        self.driver.find_element_by_id("password").send_keys(row[1])
        #time.sleep(3)
        self.driver.find_element_by_css_selector(".login_btn.fl").click()
        welcome = self.driver.find_element_by_css_selector(".site-nav-right.fr>a:nth-child(1)").text
        self.assertEqual("您好 test", welcome)


Reads the file data

import csv
import os
def reader(filename):
    list=[]
    base_path=os.path.dirname(__file__)
    path=base_path.replace("func","testdata/"+filename)
    with open(path) as file:
        table=csv.reader(file)
        i=0
        for row in table:
            if i==0:
                pass
            else:
                list.append(row)
            i=i+1
    return list

Execute all test cases

import unittest2
from auto_test_frame.lib.HTMLTestRunner import HTMLTestRunner

if __name__ == '__main__':
    suite=unittest2.defaultTestLoader.discover("./testcases","*Test.py")
    path="report/TestReport.html"
    file=open(path,'wb')
    HTMLTestRunner(stream=file, verbosity=1,title="自动化测试练习报告",description="测试环境:Chrome", tester="lkx").run(suite)

Code python full output during practice for themselves, please indicate the source.

Published an original article · won praise 0 · Views 11

Guess you like

Origin blog.csdn.net/weixin_45783203/article/details/104349217