Ito ang command na py.test-2.7 na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator
PROGRAMA:
NAME
pytest - paggamit ng pytest
TUMATAWAG PY.TEST SA PAMAMAGITAN NG PYTHON -M PY.TEST
Bago sa bersyon 2.0.
Kung gumagamit ka ng Python-2.5 o mas bago maaari kang mag-invoke ng pagsubok sa pamamagitan ng Python interpreter mula sa
ang command line:
python -m pytest [...]
Ito ay katumbas ng pag-invoke ng command line script py.test [...] direkta.
PAGKAKITA HELP ON VERSION, OPTION MGA PANGALAN, Kapaligiran MGA VARIABLE
py.test --version # ay nagpapakita kung saan nagmula ang pytest
py.test --fixtures # ipakita ang magagamit na mga argumento ng builtin na function
py.test -h | --help # ipakita ang tulong sa command line at mga opsyon sa config file
PAGHihinto PAGKATAPOS ANG FIRST (O N) MGA KABIGUAN
Upang ihinto ang proseso ng pagsubok pagkatapos ng unang (N) pagkabigo:
py.test -x # stop pagkatapos ng unang pagkabigo
py.test --maxfail=2 # stop pagkatapos ng dalawang pagkabigo
PAGTUKOY MGA PAGSUBOK / PUMILI MGA PAGSUBOK
Maraming mga pagpipilian sa pagsubok na tumakbo:
py.test test_mod.py # magpatakbo ng mga pagsubok sa module
py.test somepath # patakbuhin ang lahat ng pagsubok sa ibaba ng somepath
py.test -k stringexpr # nagpapatakbo lamang ng mga pagsubok na may mga pangalan na tumutugma sa
# "string expression", hal. "MyClass at hindi paraan"
# ay pipili ng TestMyClass.test_something
# ngunit hindi TestMyClass.test_method_simple
py.test test_mod.py::test_func # ay nagpapatakbo lamang ng mga pagsubok na tumutugma sa "node ID",
# eg "test_mod.py::test_func" ang pipili
# lamang test_func sa test_mod.py
py.test test_mod.py::TestClass::test_method # magpatakbo ng isang paraan sa
# isang klase
Mag-import ng 'pkg' at gamitin ang lokasyon ng filesystem nito upang maghanap at magpatakbo ng mga pagsubok:
py.test --pyargs pkg # patakbuhin ang lahat ng mga pagsubok na makikita sa ibaba ng direktoryo ng pypkg
PAGBABAGO PYTHON BALIKAN MULI Pag-print
Mga halimbawa para sa pagbabago ng traceback printing:
py.test --showlocals # ipakita ang mga lokal na variable sa mga traceback
py.test -l # ipakita ang mga lokal na variable (shortcut)
py.test --tb=long # ang default na informative traceback formatting
py.test --tb=native # ang Python standard library formatting
py.test --tb=short # isang mas maikling traceback na format
py.test --tb=line # isang linya lamang sa bawat pagkabigo
PAGBABA SA PDB (PYTHON DEBUGGER) ON MGA KABIGUAN
Ang Python ay may kasamang builtin na Python debugger na tinatawag PDB. pytest nagbibigay-daan sa isa na bumaba sa
ang PDB prompt sa pamamagitan ng opsyon sa command line:
py.test --pdb
Tatawagin nito ang Python debugger sa bawat pagkabigo. Kadalasan baka gusto mo lang gawin
ito para sa unang bagsak na pagsubok upang maunawaan ang isang tiyak na sitwasyon ng pagkabigo:
py.test -x --pdb # i-drop sa PDB sa unang pagkabigo, pagkatapos ay tapusin ang sesyon ng pagsubok
py.test --pdb --maxfail=3 # drop sa PDB para sa unang tatlong pagkabigo
Tandaan na sa anumang pagkabigo ang impormasyon ng pagbubukod ay naka-imbak sa sys.last_value,
sys.last_type at sys.last_traceback. Sa interactive na paggamit, ito ay nagpapahintulot sa isa na bumaba sa
postmortem debugging gamit ang anumang tool sa pag-debug. Maaari ring manu-manong i-access ng isa ang pagbubukod
impormasyon, halimbawa:
>>> import sys
>>> sys.last_traceback.tb_lineno
42
>>> sys.last_value
AssertionError('assert result == "ok"',)
PAGTATAYA A BREAKPOINT / Aka SET_TRACE()
Kung gusto mong magtakda ng breakpoint at ipasok ang pdb.set_trace() maaari kang gumamit ng isang katulong:
import pytest
def test_function():
...
pytest.set_trace() # invoke PDB debugger at tracing
Bago ang pytest na bersyon 2.0.0 maaari ka lamang pumasok PDB pagsubaybay kung hindi mo pinagana ang pagkuha
sa command line sa pamamagitan ng py.test -s. Sa mga susunod na bersyon, awtomatikong hindi pinapagana ng pytest ito
pagkuha ng output kapag pumasok ka PDB pagsubaybay:
· Ang pagkuha ng output sa ibang mga pagsubok ay hindi apektado.
· Anumang naunang test output na nakuha na at ipoproseso nang ganoon.
· Anumang susunod na output na ginawa sa loob ng parehong pagsubok ay hindi kukunan at sa halip ay makukuha
direktang ipinadala sa sys.stdout. Tandaan na ito ay totoo kahit na para sa pagsubok na output na nagaganap
pagkatapos mong lumabas sa interactive PDB tracing session at magpatuloy sa regular na pagsubok
tumakbo.
Dahil pytest bersyon 2.4.0 maaari mo ring gamitin ang katutubong Python angkat pdb;pdb.set_trace()
tawag para makapasok PDB pagsubaybay nang hindi kinakailangang gamitin ang pytest.set_trace() pambalot o
tahasang hindi paganahin ang pag-capture ng output ng pytest sa pamamagitan ng py.test -s.
PAG-PROFILE PAGSUBOK Pagpapatupad TAGAL
Upang makakuha ng listahan ng pinakamabagal na 10 tagal ng pagsubok:
py.test --durations=10
PAGLIKHA JUNITXML FORMAT MGA FILE
Upang lumikha ng mga file ng resulta na maaaring basahin ni Hudson o iba pang Patuloy na pagsasama
mga server, gamitin ang invocation na ito:
py.test --junitxml=path
upang lumikha ng isang XML file sa landas.
record_xml_property
Bago sa bersyon 2.8.
Kung gusto mong mag-log ng karagdagang impormasyon para sa isang pagsubok, maaari mong gamitin ang record_xml_property
kabit:
def test_function(record_xml_property):
record_xml_property("example_key", 1)
igiit 0
Magdaragdag ito ng karagdagang pag-aari example_key="1" sa nabuo kaso sa pagsubok mga tag:
BABALA:
Isa itong pang-eksperimentong feature, at ang interface nito ay maaaring mapalitan ng higit pa
malakas at pangkalahatan sa mga susunod na bersyon. Ang functionality per-se ay pananatilihin,
gayunpaman.
Sa kasalukuyan ay hindi ito gumagana kapag ginamit kasama ng pytest-xdist plugin.
Pakitandaan din na ang paggamit ng feature na ito ay masisira ang anumang pag-verify ng schema. Ito
maaaring maging problema kapag ginamit sa ilang mga CI server.
PAGLIKHA RESULTLOG FORMAT MGA FILE
Upang gumawa ng mga plain-text na machine-readable na mga file ng resulta maaari kang mag-isyu ng:
py.test --resultlog=path
at tingnan ang nilalaman sa landas lokasyon. Ang ganitong mga file ay ginagamit hal ng PyPy-test
web page upang ipakita ang mga resulta ng pagsubok sa ilang mga rebisyon.
NAGPADALA PAGSUBOK REPORT SA ONLINE PASTEBIN SERVICE
Paglikha a URL para bawat pagsusulit pagkabigo:
py.test --pastebin=failed
Magsusumite ito ng impormasyon sa pagsubok na pagpapatakbo sa isang malayuang serbisyo ng I-paste at magbibigay ng URL para sa bawat isa
kabiguan. Maaari kang pumili ng mga pagsubok gaya ng dati o magdagdag bilang halimbawa -x kung isa lang ang gusto mong ipadala
partikular na kabiguan.
Paglikha a URL para a buo pagsusulit Sesyon mag-log:
py.test --pastebin=all
Kasalukuyang nagdidikit lamang sa http://bpaste.net ipinatupad ang serbisyo.
disable PLUGINS
Upang i-disable ang paglo-load ng mga partikular na plugin sa oras ng invocation, gamitin ang -p opsyon kasama ng
ang unlapi sa:.
Halimbawa: upang hindi paganahin ang paglo-load ng plugin doctest, na responsable para sa pagpapatupad ng doctest
mga pagsubok mula sa mga text file, tumawag ng py.test tulad nito:
py.test -p no:doctest
TUMATAWAG PY.TEST MULA SA PYTHON CODE
Bago sa bersyon 2.0.
Maaari kang mag-invoke pytest mula sa Python code nang direkta:
pytest.main()
ito ay kumikilos na parang tatawagin mo ang "py.test" mula sa command line. Hindi ito magtataas
SystemExit ngunit ibalik ang exitcode sa halip. Maaari mong ipasa ang mga opsyon at argumento:
pytest.main(['-x', 'mytestdir'])
o ipasa sa isang string:
pytest.main("-x mytestdir")
Maaari mong tukuyin ang mga karagdagang plugin sa pytest.pangunahing:
# nilalaman ng myinvoke.py
import pytest
klase MyPlugin:
def pytest_sessionfinish(self):
print("*** pagtapos ng pag-uulat sa pagsubok na tumakbo")
pytest.main("-qq", plugins=[MyPlugin()])
Ang pagpapatakbo nito ay magpapakita na MyPlugin ay idinagdag at ang hook nito ay tinawag:
$ python myinvoke.py
*** pagtatapos ng pag-uulat ng pagsubok
Gumamit ng py.test-2.7 online gamit ang mga serbisyo ng onworks.net