python自动化测试三部曲之request+django实现接口测试

我的思路是这样的

1、先用django实现登陆、增加、删除、查看4个接口

2、在excel定义好测试案例、然后读取excel中的案例,然后把案例用unittest框架组装和封装

3、启动django,执行测试案例

一、先跑通unittest到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数据

1

return HttpResponse(result, content_type="application/json;charset=utf-8")

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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请求

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

#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框架,测试案例可以这么写

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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框架中的classmethod来解决,因为实例化一个测试类可以放在前置条件中

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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中加入断言

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

下面是一级路由

1

url(r'^web/', include('unittesstApp1.urls'))

下面是二级路由

1

url(r'^login/', views.test_login),

b、登录接口的视图函数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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")

这里我们用到了session来代替cookies

2、增加用户接口

a、增加用户对应的url

一级路由同登陆接口,下面是二级路由

1

url(r'^add/', views.test_add),

b、增加用户接口对应的视图函数,这里我们做了各种异常处理,且判断了用户是否登陆,也就是通过是否携带cookies来判断

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

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

一级路由同登陆接口,这里只看二级路由

1

url(r'^del/', views.del_user),

b、删除接口对应的视图函数,这里我做了各种异常处理,也做了用户是否登陆的检测,也是通过检测cookies来实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

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,下面是二级路由

1

url(r'^scan/', views.get_user),

b、查看接口对应的url,这里我们不检测用户是否登陆,直接把查到的数据返回给客户,如果查询报错,才返回错误的信息

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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、设计删除数据库中所有的接口,用来做后置条件

1

2

3

4

5

6

7

8

9

10

11

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、定义常量,也就是每列对应的值

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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、定义读取excel的类,因为我要从excel中读取案例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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、定义我们的接口函数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

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、定义测试案例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

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、引入unittest的suit,组织案例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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\unittestForDjango>python manage.py runserver 9090
Performing system checks...

System check identified no issues (0 silenced).
October 19, 2019 - 22:46:42
Django version 1.11.7, using settings 'unittestForDjango.settings'
Starting development server at http://127.0.0.1:9090/
Quit the server with CTRL-BREAK

2、执行测试套件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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)

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
qq群号:485187702【暗号:csdn11】
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
视频+文档+PDF+面试题可以关注公众号:【软件测试小dao】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值