Introduction to pytest

Introduction to pytest

Slides for my EuroPython 2014 talk on pytest

0aa514c079b74c6655e6a8bf1073c878?s=128

Andreas Pelme

July 23, 2014
Tweet

Transcript

  1. *OUSPEVDUJPOUPQZUFTU "OESFBT1FMNF &VSP1ZUIPO 4MJEFTIUUQTQFBLFSEFDLDPNQFMNF personalkollen

  2. 5PQJDT w*OUSPEVDUJPO w5FTUJOHXJUIMFTTCPJMFSQMBUF w1MVHJOT w5FTUEJTDPWFSZ w1ZUFTUpYUVSFT w1PSUJOHFYJTUJOHQSPKFDUT

  3. 5FTUJOH

  4. BGVMMGFBUVSFE1ZUIPOUFTUJOHUPPM QZUFTU

  5. None
  6. 5FTUTXJUIMFTTCPJMFSQMBUF

  7. %FNPUJNF

  8. %FNP#FGPSF import  unittest   ! ! def  upper_reverse(text):    

         return  ''.join(reversed(text.upper()))   ! ! class  TestUpperReverse(unittest.TestCase):          def  test_upper_reverse(self):                  self.assertEqual(upper_reverse('hello'),  'OLLEH')
  9. %FNP"GUFS def  upper_reverse(text):          return  ''.join(reversed(text.upper()))  

    ! ! def  test_upper_reverse():          assert  upper_reverse('hello')  ==  'OLLEH'
  10. %FNPUJNF w"TTFSUJPOTXJUIQMBJOBTTFSUTUBUFNFOU w4VCDMBTTJOH5FTU$BTFJTOPUSFRVJSFE w5FTUTBSFGPVOEBOEDPMMFDUFEXJUIUIF QZUFTUDPNNBOE

  11. 1MVHJOT w%JTUSJCVUFEQBSBMMFMJ[FEQZUFTUYEJTU w%KBOHPQZUFTUEKBOHP w5XJTUFEQZUFTUUXJTUFE w-PHDBQUVSFQZUFTUDBQUVSFMPH w$PWFSBHFSFQPSUJOHQZUFTUDPW wBOENBOZNPSF wIUUQQZUFTUPSHMBUFTUQMVHJOTIUNMFYUFSOBMQMVHJOT

  12. 3VOOJOHUIFUFTUT

  13. 3VOUIFFOUJSFUFTUTVJUF $  py.test

  14. 3VOBMMUFTUTJOBTQFDJpDpMF $  py.test  test_bar.py

  15. 3VOBMMUFTUDBTFTUIBUBSFOBNFE UFTU@GPP $  py.test  -­‐k  test_foo

  16. #ZEFGBVMU QZUFTUEJTDPWFSTUFTUTJO test_*.py   *_test.py

  17. .BSLJOHUFTUT ZPVDBONBLFVQZPVSPXONBSLFST import  pytest   ! ! @pytest.mark.slow   def

     test_very_long_running_test():          pass
  18. 3VOBMMUFTUTXJUIBTQFDJpDNBSLFS $  py.test  -­‐m  slow

  19. PSXJUIPVUBTQFDJpDNBSLFS $  py.test  -­‐m  "not  slow"

  20. 4LJQQJOHUFTUT import  pytest   import  sys   ! ! @pytest.mark.skipif(sys.platform

     ==  'darwin',                                          reason='Feature  Y  not  supported  on  OS  X')   def  test_non_osx():          pass
  21. %FQFOEFODZJOKFDUJPOPGUFTUpYUVSFT QZUFTUpYUVSFT

  22. %FNPUJNF

  23. %FQFOEFODZJOKFDUJPOPGUFTUIFMQFS import  pytest   from  selenium.webdriver  import  Firefox   !

    @pytest.fixture   def  webdriver(request):          driver  =  Firefox()          request.addfinalizer(driver.quit)          return  driver   ! def  test_nix_website_title(webdriver):          webdriver.get('https://nixos.org/nix/')          assert  'Nix'  in  webdriver.title   ! def  test_pytest_website_title(webdriver):          webdriver.get('http://pytest.org/latest/')
  24. 3VOUFTUTJOGPVSQSPDFTTFT $  pip  install  pytest-­‐xdist   $  py.test  -­‐n  4

  25. VOJUUFTU /PTFTUZMFBOE%KBOHPUFTUTBSFTVQQPSUFE 1PSUJOHBOFYJTUJOHQSPKFDU

  26. "EWBODFE6TFTPGQZUFTU'JYUVSFT 'MPSJT#SVZOPPHIF "! UPEBZ  ! *NQSPWJOHZPVSBVUPNBUFEUFTUJOHXJUIQZUFTU )PMHFS,SFLFM ""!'SJEBZ %PO`UNJTT

  27. &NBJMBOESFBT!QFMNFTF 5XJUUFS!BOESFBTQFMNF *3$QFMNF!QZMJCPO'SFFOPEF
 4MJEFTIUUQTQFBLFSEFDLDPNQFMNF 2VFTUJPOT