python自動化テスト三部作のrequest+django実現インターフェーステスト
40341 ワード
国慶節の時に三編のブログを書きたいです。紹介とまとめてインタフェーステストをします。国慶節の時に子供を連れてきたので、計画通りに完成しなかったです。今日は第二編を完成しました。恥ずかしいです。
ここで私の最初のブログの住所はhttps://www.jb51.net/article/197004.htmです。主にunittestフレームワークを紹介します。興味がある学生は足を運んでみてもいいです。
ここでは余計な話は抜きにして、本題に入ります。
私の考えはこうです。
1、まずdjangoで登録、追加、削除、4つのインターフェースを確認する。
2、excelでテストケースを定義して、エクセルの中の判例を読んで、判例をunittestフレームで組み立てててパッケージします。
3、djangoを起動し、テスト事例を実行する
一、先走りユニティストからdjangoまでの流れ
1、まずDjangoのプロジェクトを作成します。
2、ルートを作成します。ここでは二級ルートを使います。
a、まずプロジェクトディレクトリのurls.pyファイルをappディレクトリの下にコピーします。
b、工程目録のurls.pyファイルを修正して、一級ルートを定義する。
c、appディレクトリのurls.pyファイルを修正して、二級ルートを設定します。ここではデフォルトのadminというルートを削除する必要があります。
d、このルートが指すビューの関数を定義します。
e、djangoを起動します。ここでは9090ポートを使って起動します。私たちのJenkinsポートは8080です。
g、ブラウザを開けてdjangoを訪問します。簡単なDjangoプロジェクトはもう開通しました。
3、ビュー関数において、GET要求とPOST要求をそれぞれ処理する方法を定義する。
a、ビュー関数の定義
ここでこのパラメータを通じてブラウザに教えてください。私たちはJSONデータを返します。
ここでは簡単な例を書いて、ユーザーテーブルを設計し、4つのインターフェースを設計します。
インターフェース1:ログイン
インターフェース2:ユーザーを追加し、ユーザー登録が必要です。
インターフェース3:ユーザーを削除し、ユーザー登録が必要です。
インターフェース4:ユーザーを問い合わせるために、ユーザ登録は必要ありません。
1、まず登録インターフェースを見てください。
a、登録インターフェースに対応するurl
次は一級ルートです。
2、ユーザーインターフェースを追加する
a、ユーザー対応のurlを増やす
一級ルートと登録インターフェース、下は二級ルートです。
a、ユーザー対応のurlを削除する
一級ルートと登録インターフェースは、ここでは二級ルートしか見られません。
a、インターフェース対応のurlを確認する
一級ルートと登録インターフェースurl、下は二級ルートです。
1、excelにインターフェーステストの実例を書いてください。
2、定数を定義します。つまり列ごとの値です。
1、スタートdjango
E:\python\unittest ForDjango>python manage.py runserver 9090
Performing system checks…
System check identifedのissues(0 silenced)
October 19,2019-22:46:42
Django version 1.11.7、using settings'unittest ForDjango.settings'
Starting development server athttp://127.0.0.1:9090/
Quit the server with CTRL-BREAK
2、試験キットの実行
ここで私の最初のブログの住所はhttps://www.jb51.net/article/197004.htmです。主にunittestフレームワークを紹介します。興味がある学生は足を運んでみてもいいです。
ここでは余計な話は抜きにして、本題に入ります。
私の考えはこうです。
1、まずdjangoで登録、追加、削除、4つのインターフェースを確認する。
2、excelでテストケースを定義して、エクセルの中の判例を読んで、判例をunittestフレームで組み立てててパッケージします。
3、djangoを起動し、テスト事例を実行する
一、先走りユニティストからdjangoまでの流れ
1、まずDjangoのプロジェクトを作成します。
2、ルートを作成します。ここでは二級ルートを使います。
a、まずプロジェクトディレクトリのurls.pyファイルをappディレクトリの下にコピーします。
b、工程目録のurls.pyファイルを修正して、一級ルートを定義する。
c、appディレクトリのurls.pyファイルを修正して、二級ルートを設定します。ここではデフォルトのadminというルートを削除する必要があります。
d、このルートが指すビューの関数を定義します。
e、djangoを起動します。ここでは9090ポートを使って起動します。私たちのJenkinsポートは8080です。
E:\python\unittestForDjango>python manage.py runserver 9090
f、ここは起動成功のパターンです。私が閉じ込めている警告は無視できます。ここでDjangoのadminが必要なので、djangoのadminは使えません。g、ブラウザを開けてdjangoを訪問します。簡単なDjangoプロジェクトはもう開通しました。
3、ビュー関数において、GET要求とPOST要求をそれぞれ処理する方法を定義する。
a、ビュー関数の定義
ここでこのパラメータを通じてブラウザに教えてください。私たちはJSONデータを返します。
return HttpResponse(result, content_type="application/json;charset=utf-8")
def test_login(request):
method = request.method.upper()
if method == "GET":
result = {}
name = request.GET.get("username",None)
pwd = request.GET.get("pwd",None)
result["name"] = name
result["pwd"] = pwd
result = json.dumps(result)
# return HttpResponse(result)
return HttpResponse(result, content_type="application/json;charset=utf-8")
else:
result = {}
name = request.POST.get("username",None)
pwd = request.POST.get("pwd",None)
result["name"] = name
result["pwd"] = pwd
result = json.dumps(result)
return HttpResponse(result,content_type="application/json;charset=utf-8")
b、requestモジュールを使用してPOSTとGET要求を開始する。
#Auther Bob
#--*--conding:utf-8 --*--
import requests
import json
class TestCase(object):
def __init__(self,username,pwd,url):
self.username = username
self.pwd = pwd
self.url = url
def get(self):
# get
url = self.url + "?username=" + str(self.username) + "&" + "pwd=" + str(self.pwd)
res = requests.get(url=url)
print(res.text,type(res.text))
def post(self):
# post
data = {
"username" : self.username,
"pwd" : self.pwd
}
res = requests.post(url=self.url,data=data)
print(res.text)
if __name__ == '__main__':
url = "http://127.0.0.1:9090/web/login/"
username = "zhangsan"
pwd = "123"
t = TestCase(username,pwd,url)
t.get()
t.post()
c、ここではunittestフレームワークを紹介します。テストケースはこのように書くことができます。
import unittest
from test3 import test_request
class TestDjango(unittest.TestCase):
def setUp(self):
print("unittest ")
def tearDown(self):
print("unittest ")
def test_01(self):
url = "http://127.0.0.1:9090/web/login/"
username = "zhangsan"
pwd = "123"
t = test_request.TestCase(url=url,username=username,pwd=pwd)
def test_02(self):
url = "http://127.0.0.1:9090/web/login/"
username = "zhangsan"
pwd = "123"
t = test_request.TestCase(url=url,username=username,pwd=pwd)
t.post()
if __name__ == '__main__':
unittest.main(verbosity=2)
d、ここに重複コードがあります。unittestフレームの中のclassimethodを利用して解決できます。テストクラスを実際化したので、前置条件に入れることができます。
import unittest
from test3 import test_request
class TestDjango(unittest.TestCase):
@classmethod
def setUpClass(cls):
url = "http://127.0.0.1:9090/web/login/"
username = "zhangsan"
pwd = "123"
# t , python
cls.t = test_request.TestCase(url=url,username=username,pwd=pwd)
def setUp(self):
print("unittest ")
def tearDown(self):
print("unittest ")
def test_01(self):
self.t.get()
def test_02(self):
self.t.post()
if __name__ == '__main__':
unittest.main(verbosity=2)
e、testcaseに断言を入れる
import unittest
from test3 import test_request
class TestDjango(unittest.TestCase):
@classmethod
def setUpClass(cls):
url = "http://127.0.0.1:9090/web/login/"
username = "zhangsan"
pwd = "123"
# t , python
cls.t = test_request.TestCase(url=url,username=username,pwd=pwd)
def setUp(self):
print("unittest ")
def tearDown(self):
print("unittest ")
def test_01(self):
res = self.t.get()
self.assertEqual(200,res.status_code)
def test_02(self):
res = self.t.post()
self.assertEqual(200, res.status_code)
if __name__ == '__main__':
unittest.main(verbosity=2)
f、testsuiteの導入
import unittest
from unittest import TestLoader
from test3 import test_unittest
if __name__ == '__main__':
suite = unittest.TestSuite()
loader = TestLoader()
test_cases1 = unittest.TestLoader().loadTestsFromModule(test_unittest)
# , case
suite.addTests(test_cases1)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
二、djangoにインターフェースを設計する。ここでは簡単な例を書いて、ユーザーテーブルを設計し、4つのインターフェースを設計します。
インターフェース1:ログイン
インターフェース2:ユーザーを追加し、ユーザー登録が必要です。
インターフェース3:ユーザーを削除し、ユーザー登録が必要です。
インターフェース4:ユーザーを問い合わせるために、ユーザ登録は必要ありません。
1、まず登録インターフェースを見てください。
a、登録インターフェースに対応するurl
次は一級ルートです。
url(r'^web/', include('unittesstApp1.urls'))
次は二級ルートです。
url(r'^login/', views.test_login),
b、ログインインターフェースのビュー関数
def test_login(request):
method = request.method.upper()
if method == "GET":
returndict = {"code": 200, "error": None}
username = request.GET.get("username",None)
password = request.GET.get("password",None)
if username == "admin" and password == "admin123.":
request.session["username"] = username
request.session["password"] = password
result = json.dumps(returndict)
else:
returndict["code"] = 201
returndict["error"] = " "
result = json.dumps(returndict)
return HttpResponse(result,content_type="application/json;charset=utf-8")
ここで私達はcookiesの代わりにsessionを使いました。2、ユーザーインターフェースを追加する
a、ユーザー対応のurlを増やす
一級ルートと登録インターフェース、下は二級ルートです。
url(r'^add/', views.test_add),
b、ユーザーインターフェースに対応するビュー関数を追加し、ここでは各種の異常処理を行い、ユーザーがログインしているかどうか、つまりクッキーを持っているかどうかを判断します。
def test_add(request):
method = request.method.upper()
if method == "POST":
returndict = {"code": 200, "error": None}
username = request.session.get("username",None)
password = request.session.get("password",None)
if username == "admin" and password == "admin123.":
newusername = request.POST.get("username",None)
age = request.POST.get("age",None)
sex = request.POST.get("sex",None)
pwd = request.POST.get("pwd",None)
userinfo = [newusername,age,sex,pwd]
print(userinfo)
if not "None" in userinfo and all(userinfo):
if models.userInfo.objects.filter(username = userinfo[0]).exists():
returndict["error"] = "{username} is exists,please add a new username".format(username = username)
returndict["code"] = 201
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
else:
models.userInfo.objects.create(
username = newusername,
age = age,
sex = sex,
pwd = pwd
)
if models.userInfo.objects.filter(username=userinfo[0]).exists():
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
else:
returndict["error"] = "{username} is error,please retry add".format(username=username)
returndict["code"] = 201
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
else:
returndict["error"] = "must input username,age,sex,pwd"
returndict["code"] = 201
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
else:
returndict = {"code": 201, "error": " "}
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
3、インターフェースを削除するa、ユーザー対応のurlを削除する
一級ルートと登録インターフェースは、ここでは二級ルートしか見られません。
url(r'^del/', views.del_user),
b、インターフェースの対応するビュー関数を削除します。ここでは各種の異常処理を行いました。ユーザーが登録するかどうかの検査もしました。cookiesを検査して実現します。
def del_user(request):
method = request.method.upper()
if method == "POST":
returndict = {"code": 200, "error": None}
username = request.session.get("username",None)
password = request.session.get("password",None)
if username == "admin" and password == "admin123.":
delusername = request.POST.get("username",None)
print(delusername)
if delusername != None:
if models.userInfo.objects.filter(username=delusername).exists():
delid = models.userInfo.objects.get(username=delusername).id
print(delid)
try:
models.userInfo.objects.get(id=delid).delete()
except Exception as e:
returndict = {"code": 201, "error": e}
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
else:
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
else:
returndict = {"code": 201, "error": "{username} is not exists".format(username = delusername)}
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
else:
returndict = {"code": 201, "error": "you must input a username"}
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
else:
returndict = {"code": 201, "error": "username or password is error"}
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
4、表示インターフェースa、インターフェース対応のurlを確認する
一級ルートと登録インターフェースurl、下は二級ルートです。
url(r'^scan/', views.get_user),
b、インターフェースの対応するurlを確認します。ここではユーザーがログインしているかどうかを検査しないで、直接に調べたデータをお客様に返します。もし問い合わせが間違ったら、エラーの情報を返します。
def get_user(request):
method = request.method.upper()
returndict = {"code": 200, "userinfo": None}
if method == "GET":
try:
alluser = models.userInfo.objects.all().values_list("username")
alluserlist = []
for i in alluser:
alluserlist.append(i)
returndict["userinfo"] = alluserlist
except Exception as e:
returndict["code"] = "201"
returndict["error"] = e
finally:
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
5、データベース内のすべてのインターフェースを削除し、後置条件を作るために設計する。
def del_alluser(request):
method = request.method.upper()
if method == "POST":
returndict = {"code": 200, "error": None}
username = request.session.get("username", None)
password = request.session.get("password", None)
if username == "admin" and password == "admin123.":
if models.userInfo.objects.all().count() > 0:
models.userInfo.objects.all().delete()
result = json.dumps(returndict)
return HttpResponse(result, content_type="application/json;charset=utf-8")
三、判例準備1、excelにインターフェーステストの実例を書いてください。
2、定数を定義します。つまり列ごとの値です。
class TestConfig(object):
def __init__(self):
self.name = 0
self.url = 1
self.method = 2
self.cookies = 3
self.data = 4
self.res = 5
self.exec = 6
def getname(self):
return self.name
def geturl(self):
return self.url
def getmethod(self):
return self.method
def getcookies(self):
return self.cookies
def getdata(self):
return self.data
def getres(self):
return self.res
def getexec(self):
return self.exec
3、エクセルの種類を定義します。エクセルから判例を読みます。
import xlrd
import os
class testexcel(object):
casepath = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "case", "testcase.xlsx")
def __init__(self):
self.casepath = testexcel.casepath
self.execlobj = xlrd.open_workbook(self.casepath)
self.sheetobj = self.execlobj.sheet_by_index(0)
def get_excel_data(self,row,col):
max_row = self.get_excel_max_row()
max_col = self.get_excel_max_col()
if row > max_row -1 or col > max_col - 1:
return False
else:
data = self.sheetobj.cell_value(row,col)
return data
def get_excel_max_row(self):
r_num = self.sheetobj.nrows
return r_num
def get_excel_max_col(self):
c_num = self.sheetobj.ncols
return c_num
4、私たちのインターフェース関数を定義する
import requests
import json
class TestLogin(object):
def __init__(self,username,pwd,url):
self.username = username
self.pwd = pwd
self.url = url
def get(self):
# get
url = self.url + "?username=" + str(self.username) + "&" + "password=" + str(self.pwd)
res = requests.get(url=url,
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
})
# print(json.loads(res.text))
return res
def post(self):
# post
data = {
"username" : self.username,
"pwd" : self.pwd
}
res = requests.post(url=self.url,
data=data,
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
)
# print(res.text)
return res
class TestAdd(object):
def __init__(self,username,age,sex,pwd,cookies,url):
self.username = username
self.age = age
self.sex = sex
self.pwd = pwd
self.url = url
self.cookies = cookies
def post(self):
# post
data = {
"username" : self.username,
"pwd" : self.pwd,
"age" : self.age,
"sex" : self.sex
}
res = requests.post(url=self.url,
data=data,
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
cookies=self.cookies,
)
# print(res.text)
return res
class Testdel(object):
def __init__(self, username,cookies,url):
self.username = username
self.cookies = cookies
self.url = url
def post(self):
# post
data = {
"username": self.username,
}
res = requests.post(url=self.url,
data=data,
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
cookies=self.cookies,
)
# print(res.text)
return res
class Testscan(object):
def __init__(self,url):
self.url = url
def get(self):
res = requests.get(url=self.url,
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
cookies=None,
)
return res
5、試験事例の定義
import unittest
from test3 import test_request
import json
from util import test_json
from util import test_excel
from case import testconfig
import requests
class TestDjango(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.alldata = test_json.testjson()
@classmethod
def tearDownClass(cls):
url = "http://127.0.0.1:9090/web/login/" + "?username=" + "admin" + "&" + "password=" + "admin123."
res = requests.get(url=url,
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
})
url = "http://127.0.0.1:9090/web/delall/"
requests.post(url=url,
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
cookies = res.cookies
)
def get_cookies(self):
url = "http://127.0.0.1:9090/web/login/" + "?username=" + "admin" + "&" + "password=" + "admin123."
res = requests.get(url=url,
headers={
"user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
})
# print(json.loads(res.text))
return res.cookies
@unittest.skip('noexec')
def test_login_ok(self):
row = 1
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row,configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
data = json.loads(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "GET":
testobj = test_request.TestLogin(data["username"],data["pwd"],url)
resobj = testobj.get()
self.assertEqual(int(res),json.loads(resobj.text)["code"])
@unittest.skip('noexec')
def test_login_pwd_error(self):
row = 2
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row,configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
data = json.loads(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "GET":
testobj = test_request.TestLogin(data["username"],data["pwd"],url)
resobj = testobj.get()
self.assertEqual(int(res),json.loads(resobj.text)["code"])
@unittest.skip('noexec')
def test_login_user_error(self):
row = 3
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row,configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
data = json.loads(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "GET":
testobj = test_request.TestLogin(data["username"],data["pwd"],url)
resobj = testobj.get()
self.assertEqual(int(res),json.loads(resobj.text)["code"])
@unittest.skip('noexec')
def test_user_pwd_error(self):
row = 4
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row,configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
data = json.loads(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "GET":
testobj = test_request.TestLogin(data["username"],data["pwd"],url)
resobj = testobj.get()
self.assertEqual(int(res),json.loads(resobj.text)["code"])
@unittest.skip('noexec')
def test_insert_ok(self):
row = 5
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
data = json.loads(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.TestAdd(data["username"], data["age"],data["sex"], data["pwd"],cookies,url)
resobj = testobj.post()
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
@unittest.skip('noexec')
def test_insert_nologin(self):
row = 6
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
data = json.loads(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.TestAdd(data["username"], data["age"],data["sex"], data["pwd"],cookies,url)
resobj = testobj.post()
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
@unittest.skip("noexec")
def test_insert_user_error(self):
row = 7
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
data = json.loads(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.TestAdd(data.get("username",None), data.get("age",None), data.get("sex",None), data.get("pwd",None), cookies, url)
resobj = testobj.post()
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
@unittest.skip('no exec')
def test_insert_pwd_error(self):
row = 8
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
data = json.loads(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.TestAdd(data.get("username",None), data.get("age",None), data.get("sex",None), data.get("pwd",None), cookies, url)
resobj = testobj.post()
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
@unittest.skip("no exec")
def test_insert_sex_error(self):
row = 9
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
print(data)
data = json.loads(data)
print(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.TestAdd(data.get("username",None), data.get("age",None), data.get("sex",None), data.get("pwd",None), cookies, url)
resobj = testobj.post()
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
@unittest.skip('no exec')
def test_insert_age_error(self):
row = 10
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
print(data)
data = json.loads(data)
print(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.TestAdd(data.get("username",None), data.get("age",None), data.get("sex",None), data.get("pwd",None), cookies, url)
resobj = testobj.post()
print(resobj.text)
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
@unittest.skip('no exec')
def test_insert_user_exist(self):
row = 11
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
print(data)
data = json.loads(data)
print(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.TestAdd(data.get("username", None), data.get("age", None), data.get("sex", None),
data.get("pwd", None), cookies, url)
resobj = testobj.post()
print(resobj.text)
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
def test_get_user(self):
row = 12
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.Testscan(url)
resobj = testobj.get()
# print(resobj.text
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
@unittest.skip('no exec')
def test_del_user(self):
row = 13
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
print(data)
data = json.loads(data)
print(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.Testdel(data.get("username", None),cookies, url)
resobj = testobj.post()
print(resobj.text)
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
def test_del_noexistuser(self):
row = 14
configobj = testconfig.TestConfig()
excelobj = test_excel.testexcel()
execstatus = excelobj.get_excel_data(row, configobj.getexec())
if execstatus == "YES":
cookiesstatus = excelobj.get_excel_data(row, configobj.getcookies())
if cookiesstatus == "YES":
cookies = self.get_cookies()
else:
cookies = None
data = excelobj.get_excel_data(row, configobj.getdata())
print(data)
data = json.loads(data)
print(data)
url = excelobj.get_excel_data(row, configobj.geturl())
res = excelobj.get_excel_data(row, configobj.getres())
method = excelobj.get_excel_data(row, configobj.getmethod())
if method == "POST":
testobj = test_request.Testdel(data.get("username", None),cookies, url)
resobj = testobj.post()
print(resobj.text)
print(json.loads(resobj.text))
self.assertEqual(int(res), json.loads(resobj.text)["code"])
6、unit testのsuitを導入し、組織例
import unittest
from unittest import TestLoader
from test3 import test_unittest
if __name__ == '__main__':
suite = unittest.TestSuite()
loader = TestLoader()
test_cases1 = unittest.TestLoader().loadTestsFromModule(test_unittest)
# , case
suite.addTests(test_cases1)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
四、実行例1、スタートdjango
E:\python\unittest ForDjango>python manage.py runserver 9090
Performing system checks…
System check identifedのissues(0 silenced)
October 19,2019-22:46:42
Django version 1.11.7、using settings'unittest ForDjango.settings'
Starting development server athttp://127.0.0.1:9090/
Quit the server with CTRL-BREAK
2、試験キットの実行
test_del_noexistuser (test3.test_unittest.TestDjango) ... {"username":"test1"}
{'username': 'test1'}
ok
test_del_user (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_get_user (test3.test_unittest.TestDjango) ... {"code": 201, "error": "test1 is not exists"}
{'code': 201, 'error': 'test1 is not exists'}
{'code': 200, 'userinfo': []}
ok
test_insert_age_error (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_insert_nologin (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_insert_ok (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_insert_pwd_error (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_insert_sex_error (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_insert_user_error (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_insert_user_exist (test3.test_unittest.TestDjango) ... skipped 'no exec'
test_login_ok (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_login_pwd_error (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_login_user_error (test3.test_unittest.TestDjango) ... skipped 'noexec'
test_user_pwd_error (test3.test_unittest.TestDjango) ... skipped 'noexec'
----------------------------------------------------------------------
Ran 14 tests in 1.466s
OK (skipped=12)
ここで、python自動化テスト三部作のrequest+djangoインタフェーステストを実現する文章を紹介します。これに関連して、request djangoインターフェイステストの内容をもっと紹介します。私達の以前の文章を検索してください。