Technology sharing

Quid est probatio interfaciei et quomodo tentatio instrumenti instrumenti?

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Quid est probatio interface?
Ut nomen suggesserit, probatio interfaciei est explorare medium inter systemata vel partes, praesertim ut comprobatio processus notitiarum, translationis et administrationis rerum, ac mutuae dependentiae logicae. Protocolla interfacii dividuntur in HTTP, WebService, Dubbo, Frugalitas, Socket et aliae species.

In "pyramide" exemplar nunc probationis, probatio interfaciei pertinet ad alterum tabulatum probationis integrationis inserviendi. Cum UI iacuit (maxime WEB vel APP) probatio automated, probatio interfaciei automated maiora beneficia habet, facile ad efficiendum, humilem sustentationem impensas habet et rationem input-output altiorem habet probatio automated.

Infra exemplum interfaciendi HTTP accipimus ut processum probationis interfaciei automationis plene inducat: ex analysi exigentiis utendi casus consilio, ex scripto scripto, executioni probandi ut analysin proveniat, et integram usum casus consilium et scripta experiendi praebeat.

2. Basic processus
Processus interfaciei fundamentalis functionis automated probationis talis est:

Requisita analysis--causa usus design->Script development-> Test execution->Result analysis

2.1 Sample interface
Interface nomen: Douban quaerere cinematographica

Inscriptio documenti interfaciei: https://developers.douban.com/wiki/?title=movie_v2#search

Instrumenti ad exemplum vocationis:

1) Quaerere per missum et turbam: https://api.douban.com/v2/movie/search?q=Zhang Yimou

2) Quaerere titulum pelliculae: https://api.douban.com/v2/movie/search?q=西游之西游

3) Quaerere per genre: https://api.douban.com/v2/movie/search?tag=comedium


3. opus analysis
Requisita analysis referuntur ad documenta sicut exigentias et rationes.

Exempli gratia: Douban cinematographica quaerendi interfaciem, postulationem quam intellego est quaerere titulos pelliculas, membra et tags mittere, et inquisitiones in paginis reddere.

4. Usus consilio causa
Consilium de causa utere nititur ad intellegendam interfaciem probationis requisita et mentem destinata programmatis ut MindManager vel XMind ad scribendam casus consilium usus causae designationis methodi aequivalentiam ordinis divisionem, limites valoris analysin, analysin missionis, causa et effectus schemata, tabulae orthogonales etc.

Pro cinematographico Douban quaerendo munus interfaciendi partem test, maxime in tribus aspectibus intendunt: parametri verificationis, functionis verificationis, et negotii missionis verificationis.

Progressus 5. Script

Ex test casus consilio supra scripto usi sumus python+segrum compage ad scribenda scripta testium automated pertinentes. Plene potest percipere functiones interfaciei probationis automated, exsecutionis latae et electronicae mittendis testium relationum.

5.1 Related lib institutionem

Necessariae bibliothecae lib ita sunt.

  1. pip install nose
  2. pip install nose-html-reporting
  3. pip install requests

5,2 interface vocatio

Petitionibus bibliothecae adhibitis, facile supra modum vocationis interface scribere possumus (ut quaerendo q=Andy Lau, codice exemplaris talis est);

  1. #coding=utf-8
  2. import requests
  3. import json
  4. url = 'https://api.douban.com/v2/movie/search'
  5. params=dict(q=u'刘德华')
  6. r = requests.get(url, params=params)
  7. print 'Search Params:n', json.dumps(params, ensure_ascii=False)
  8. print 'Search Response:n', json.dumps(r.json(), ensure_ascii=False, indent=4)

Cum scribens automated scripta test, necesse est ut aliqua encapsulation. In sequenti codice encapsulamus pelliculae Doubanae quaerendi interfaciem. Modus test_q tantum indiget ut methodo cede proviso, ut commode ansa per singulas probationes in indice qs:

  1. class test_doubanSearch(object):
  2. @staticmethod
  3. def search(params, expectNum=None):
  4. url = 'https://api.douban.com/v2/movie/search'
  5. r = requests.get(url, params=params)
  6. print 'Search Params:n', json.dumps(params, ensure_ascii=False)
  7. print 'Search Response:n', json.dumps(r.json(), ensure_ascii=False, indent=4)
  8. def test_q(self):
  9. # 校验搜索条件 q
  10. qs = [u'白夜追凶', u'大话西游', u'周星驰', u'张艺谋', u'周星驰,吴孟达', u'张艺谋,巩俐', u'周星驰,大话西游', u'白夜追凶,潘粤明']
  11. for q in qs:
  12. params = dict(q=q)
  13. f = partial(test_doubanSearch.search, params)
  14. f.description = json.dumps(params, ensure_ascii=False).encode('utf-8')
  15. yield (f,)

Scribere automated scripta testium pro singulis functionibus in ordine secundum casum consilio probati.

5,3 Ex verificationem
Cum manually probatio interface, diiudicare debemus an probatio transierit secundum eventum interfaciendi redditum. Idem dicendum est de probatione automated.

Ad hoc interface, "q=Andy Lau" quaerimus et determinare oportet an proventus reditus contineant "actor Andy Lau an titulum cinematographici Andy Lau" pellicula in eventibus redditis. Utrum "comoedia" sit, necessarium est cognoscere num numerus proventus reddituum recte sit cum paging proventus, etc. Totum exitum verificationis talis est:

  1. class check_response():
  2. @staticmethod
  3. def check_result(response, params, expectNum=None):
  4. # 由于搜索结果存在模糊匹配的情况,这里简单处理只校验第一个返回结果的正确性
  5. if expectNum is not None:
  6. # 期望结果数目不为None时,只判断返回结果数目
  7. eq_(expectNum, len(response['subjects']), '{0}!={1}'.format(expectNum, len(response['subjects'])))
  8. else:
  9. if not response['subjects']:
  10. # 结果为空,直接返回失败
  11. assert False
  12. else:
  13. # 结果不为空,校验第一个结果
  14. subject = response['subjects'][0]
  15. # 先校验搜索条件tag
  16. if params.get('tag'):
  17. for word in params['tag'].split(','):
  18. genres = subject['genres']
  19. ok_(word in genres, 'Check {0} failed!'.format(word.encode('utf-8')))
  20. # 再校验搜索条件q
  21. elif params.get('q'):
  22. # 依次判断片名,导演或演员中是否含有搜索词,任意一个含有则返回成功
  23. for word in params['q'].split(','):
  24. title = [subject['title']]
  25. casts = [i['name'] for i in subject['casts']]
  26. directors = [i['name'] for i in subject['directors']]
  27. total = title + casts + directors
  28. ok_(any(word.lower() in i.lower() for i in total),
  29. 'Check {0} failed!'.format(word.encode('utf-8')))
  30. @staticmethod
  31. def check_pageSize(response):
  32. # 判断分页结果数目是否正确
  33. count = response.get('count')
  34. start = response.get('start')
  35. total = response.get('total')
  36. diff = total - start
  37. if diff >= count:
  38. expectPageSize = count
  39. elif count > diff > 0:
  40. expectPageSize = diff
  41. else:
  42. expectPageSize = 0
  43. eq_(expectPageSize, len(response['subjects']), '{0}!={1}'.format(expectPageSize, len(response['subjects'])))

5.4 Executio probat

Ad supra scriptam probationem, narium testi- monium uti possumus ut probationes automated facile currant, et nares html nuntiantes obturaculum-in ad html formas testium relationum generandam.

Mandatum sic currite;

nosetests -v test_doubanSearch.py:test_doubanSearch --with-html --html-report=TestReport.html

5.5 Mitte inscriptio fama

Expleto experimento, methodum ab smtplib moduli paratam uti possumus ut relationem testium formatorum HTML modum mittere possit. Processus fundamentalis est legere relationem testam -> addere contenta electronica et attachiamenta -> iungo cum servo electronico -> electronicam electronicam mitte -> exitus.

  1. import smtplib
  2. from email.mime.text import MIMEText
  3. from email.mime.multipart import MIMEMultipart
  4. def send_mail():
  5. # 读取测试报告内容
  6. with open(report_file, 'r') as f:
  7. content = f.read().decode('utf-8')
  8. msg = MIMEMultipart('mixed')
  9. # 添加邮件内容
  10. msg_html = MIMEText(content, 'html', 'utf-8')
  11. msg.attach(msg_html)
  12. # 添加附件
  13. msg_attachment = MIMEText(content, 'html', 'utf-8')
  14. msg_attachment["Content-Disposition"] = 'attachment; filename="{0}"'.format(report_file)
  15. msg.attach(msg_attachment)
  16. msg['Subject'] = mail_subjet
  17. msg['From'] = mail_user
  18. msg['To'] = ';'.join(mail_to)
  19. try:
  20. # 连接邮件服务器
  21. s = smtplib.SMTP(mail_host, 25)
  22. # 登陆
  23. s.login(mail_user, mail_pwd)
  24. # 发送邮件
  25. s.sendmail(mail_user, mail_to, msg.as_string())
  26. # 退出
  27. s.quit()
  28. except Exception as e:
  29. print "Exceptioin ", e

6. Ex analysi

Aperi relationem probationis postquam narium testium curriculum generatur. Ex his constare potest quod summa 51 causarum testium in hoc experimento factae sunt, 50 quarum prosperae et quarum una defecit.

In casu usu inrito, videre potes parametros quos in his esse: {"numerare": -10, "tag": "Comoediam"}, et numerus eventuum hoc tempore retentus ab eventibus expectatis nostris repugnat (cum numerus negativus est numerus, expectatus effectus est The interface refert errorem vel utitur valorem defaultum 20, sed numerus proventus redditus est 189. Festinare et nuntiare cimex ad Douban - -)

7. The script
Integrum automatum testium scriptorum de Douban cinematographici inquisitionis instrumenti ad GitHub uploadi sum. Download inscriptio: test_demo/test_douban apud dominum · lovesoo/test_demo · GitHub

Post electronicam absolutum est, hoc mandato utere ut interface automationem plenam probationem perficiat et relationem finalem testium per electronicam mittat:

python test_doubanSearch.py
Tandem electronica relamentum mittat, tortor est ut sequitur

Denique omnibus gratias agere velim, qui articulum meum diligenter legerit. Reciprocum semper necessarium.

Haec notitia promptissima et perfectissima erit in horreis praeparandis pro amicis.