unittestのテストユニットにおいてもアサーションの方法を提供し、アサーションは成功していないユースケースで決定されます。
ユニットテストの一般的なアサーション
テストケースクラスunittestの解析フレームワークは、テスト結果を得るために、以下の方法を提供します
方法 | 検査 |
assertEqual(B) | == bの |
assertNotEqual(B) | != B |
いるassertTrue(X) | BOOL(x)は真であります |
assertFalse(X) | BOOL(x)はFalseです |
assertIs(B) | Bであります |
assertIsNot(B) | Bではありません |
assertIsNone(X) | xがNoneです |
assertIsNotNone(X) | xがNoneでありません |
assertIn(B) | Bで |
assertNotIn(B) | Bではありません |
assertIsInstance(B) | でisinstance(B) |
assertNotIsInstance(B) | ないでisinstance(a、b)は |
イラスト
実施例2で見ることができる3つは、その後観察する方法上記で引用アサーションは正しいが、最後のものは、ユースケースアサーションの失敗になる前に
#のコード:UTF-8 インポートユニットテスト クラステスト(たunittest.TestCase): デフTEST01(自己 ):''」 = Bの分析 ''」 = ' 111 ' 、B = ' 111 ' self.assertEqual(B) デフTEST02(自己 ):''」 Bの存在下で、 '' ' A = ' 静かな' B = ' テスト-静かな" self.assertIn(B) デフTEST03(自己 ):''」 失敗したユースケース '' ' A = ' 静かな' B = ' テスト-静かな" self.assertNotIn(B) もし __name__ == ' __main__ ' : unittest.main()
2つによって、障害であることを示唆している我々の結果によって表情を実行した後、故障の原因にもプリントアウト
いくつかの小さな友人は確かにあなたがより明確にエラーにそれを持つことができ、このエラーは読み取ることができないと言うでしょうか?もちろん。ここでのunittestのは、私たち自身のエラーを設定するための情報を提供します
カスタムエラーメッセージ
私たちは、あなたが主張したいのエラーメッセージの後ろに直接追加しました
デフTEST03(自己 ):''」 失敗したユースケース '' ' A = ' 静か' B = ' テスト-静か' (self.assertNotIn A、B、MSG = ' 理由与え、%sが含まれていないS%'%(A、B))
実行することにより、私たちは与えられた情報を見て、間違っている明確です。
小規模チョッパー
誰もがそれをされます上記の内容を読みますが、最終的にDIY自分自身を行う方法がわかりませんか?静かなフロントも要求について何かを書いて、私たちは、unittestの要求+で私たちの簡単なオートメーションインターフェイスを完了します
インタフェース情報
インターフェイス:HTTPS://api.apiopen.top/ searchMusic
パラメータ:name:曲の名前
インタフェース情報は、上記によると、単にいくつかのユースケースを書きます。パートナーは、エラーの後、実行の少し恐れを有していてもよく、その後、我々はエラー例外キャッチでしようとします。(具体的なコード形式の完璧なハはありません)
ここでJSON形式の変換によって返されたコンテンツインタフェースは、我々はデータを見つけたいものをより明確に私たちを聞かせて
# coding:utf-8 import unittest import requests class Music(unittest.TestCase): def test01(self): url = 'https://api.apiopen.top/searchMusic' data = { "name":"断桥残雪" } r = requests.post(url,data=data) b = r.json()['result'][0]['title'] a = '断桥残雪' self.assertEqual(a,b) print('第一个用例通过') def test02(self): url = 'https://api.apiopen.top/searchMusic' data = { "name":"说好不哭" } r = requests.post(url,data=data) a = '周杰伦' b = r.text self.assertIn(a,b) print('第二个用例通过') def test03(self): url = 'https://api.apiopen.top/searchMusic' data = { "name":"芒种" } r = requests.post(url,data=data) a = '抖音' b = r.text try: self.assertIn(a,b,msg='\n抖音不存在芒种歌曲信息中') except Exception as msg: print('错误信息%s'%msg) print('第三个用例失败') if __name__ == '__main__': unittest.main()
话不多说,我们直接执行。可以看到前面2个已经全部通过了,但是最后一个用例失败了,失败的原因也打印出来了。
我们会发现上面的代码有很多重复的地方,大家可以尝试解决代码重复性的问题哈,
通过简单的例子完成了对unittest中的断言了解,具体的大家要动手去操作,俗话说熟能生巧,在那个场景下需要用到什么样的断言方便,这个都是需要自己一点点的操作后总结出来的
如果感觉安静写的对您有帮助的话,右下角可以点个关注,哪里有写错的地方或者不懂的地方可以下方留言,看到后第一时间回复~~~