Test & Code

Test & Code

Download on the App Store

Test & Code episodes

  • 148: Coverage.py and testing packages

    How do you test installed packages using coverage.py? 

    Also, a couple followups from last week's episode on using coverage for single file applications. 


    Links:

    • episode 147: Testing Single File Python Applications/Scripts with pytest and coverage
    • Specifying source files — Coverage.py documentation
    • Testing & Packaging - Hynek
    • ack



    14 min
  • 147: Testing Single File Python Applications/Scripts with pytest and coverage

    Have you ever written a single file Python application or script?
     Have you written tests for it?
     Do you check code coverage?

    This is the topic of this weeks episode, spurred on by a listener question.

    The questions:

    • For single file scripts, I'd like to have the test code included right there in the file. Can I do that with pytest?
    • If I can, can I use code coverage on it?

    The example code discussed in the episode: script.py

    def foo():
    return 5
    def main():
    x = foo()
    print(x)
    if __name__ == '__main__': # pragma: no cover
    main()
    ## test code
    # To test:
    # pip install pytest
    # pytest script.py
    # To test with coverage:
    # put this file (script.py) in a directory by itself, say foo
    # then from the parent directory of foo:
    # pip install pytest-cov
    # pytest --cov=foo foo/script.py
    # To show missing lines
    # pytest --cov=foo --cov-report=term-missing foo/script.py
    def test_foo():
    assert foo() == 5
    def test_main(capsys):
    main()
    captured = capsys.readouterr()
    assert captured.out == "5\n"

    Suggestion by @cfbolz if you need to import pytest:

    if __name__ == '__main__': # pragma: no cover
    main()
    else:
    import pytest





    12 min
  • 146: Automation Tools for Web App and API Development and Maintenance - Michael Kennedy

    Building any software, including web apps and APIs requires testing.
     There's automated testing, and there's manual testing.

     In between that is exploratory testing aided by automation tools. 

    Michael Kennedy joins the show this week to share some of the tools he uses during development and maintenance.

    We talk about tools used for semi-automated exploratory testing. 
     We also talk about some of the other tools and techniques he uses to keep Talk Python Training, Talk Python, and Python Bytes all up and running smoothly. 

    We talk about:

    • Postman
    • ngrok
    • sitemap link testing
    • scripts for manual processes
    • using failover servers during maintenance, redeployments, etc
    • gitHub webhooks and scripts to between fail over servers and production during deployments automatically
    • floating IP addresses 
    • services to monitor your site: StatusCake, BetterUptime
    • the affect of monitoring on analytics
    • crash reporting: Rollbar, Sentry
    • response times
    • load testing: Locus


    Links:

    • Python Bytes Podcast
    • Talk Python To Me Podcast
    • Talk Python Training
    • Postman
    • ngrok
    • StatusCake
    • Better Uptime
    • Rollbar
    • Sentry
    • Locust
    • 12 requests per second in Python



    48 min
  • 145: For Those About to Mock - Michael Foord

    A discussion about mocking in Python with the original contributor of unittest.mock, Michael Foord.

    Of course we discuss mocking and unittest.mock. 

    We also discuss:

    • testing philosophy
    • unit testing and what a unit is
    • TDD
    • where Michael's towel is, and what color

    Micheal was instrumental in the building of testing tools for Python, and continues to be a pragmatic source of honest testing philosopy in a field that has a lot of contradictory information.


    Links:

    • unittest.mock - Python docs
    • Mocks Aren't Stubs - Martin Fowler
    • pytest-mock
    • mock.patch
    • Autospeccing
    • Arrange Act Assert
    • testing-in-python mailing list
    • Classical and Mockist Testing — Classical and Mockist Testing 
    • Test First Programming / Test First Development
    • episode 102: Cosmic Python, TDD, testing and external dependencies - Harry Percival
    • episode 132: mocking in Python - Anna-Lena Popkes
    • pytest
    • unittest - Python docs
    • pytest assert usage
    • 30 best practices for software development and testing | Opensource.com



    49 min
  • 144: TDD in Science - Martin Héroux

    Test Driven Development, TDD, is not easy to incorporate in your daily development. 

    Martin and Brian discuss TDD and testing and Martin's experience with testing, TDD, and using it for code involved with scientific research. 

    We discuss lots of topics around this, including:

    • What is TDD?
    • Should research software be tested in order to be trusted?
    • Time pressure and the struggle to get code done quickly. How do you make time for tests also?
    • Is testing worth it for code that will not be reused?
    • Sometimes it's hard to know how to test something.
    • Maybe people should learn to test alongside learning how to code.
    • A desire for a resource of testing concepts for non-CS people.
    • Are the testing needs and testing information needs different in different disciplines? 
      • Biology, Physics, Astrophysics, etc. Do they have different testing needs?
      • Do we need a "how to test" resource for each?


    Special Guest: Martin Héroux.


    Links:

    • Joy Division Album Cover
    • episode 140: Testing in Scientific Research and Academia - Martin Héroux — Martin's previous episode.



    53 min
  • 143: pytest markers - Anthony Sottile

    Completely nerding out about pytest markers with Anthony Sottile.

    Some of what we talk about:

    • Running a subset of tests with markers.
    • Using marker expressions with and, or, not, and parentheses.
    • Keyword expressions also can use and, or, not, and parentheses.
    • Markers and pytest functionality that use mark, such as parametrize, skipif, etc.
    • Accessing markers with itermarkers and get_closest_marker through item.
    • Passing values, metadata through markers to fixtures or hook functions.

    Links:

    • Registering markers
    • slow marker example in pytest documentation — Control skipping of tests according to command line option
    • pytest-repeat · PyPI
    • source code for pytest-repeat
    • Working with custom markers — pytest documentation
    • Using -k expr to select tests based on their name
    • Marker revamp and iteration, Historical Notes — pytest documentation



    40 min
  • 142: MongoDB - Mark Smith

    MongoDB is possibly the most recognizable NoSQL document database.
     Mark Smith, a developer advocate for MongoDB, answers my many questions about MongoDB.
     We cover some basics, but also discuss some advanced features that I never knew about before this conversation.


    Special Guest: Mark Smith.


    Links:

    • MongoDB
    • Everything You Know About MongoDB is Wrong!
    • Implementing Event Sourcing and CQRS pattern with MongoDB



    35 min
  • 141: Visual Testing - Angie Jones

    Visual Testing has come a long way from the early days of x,y mouse clicks and pixel comparisons. Angie Jones joins the show to discuss how modern visual testing tools work and how to incorporate visual testing into a complete testing strategy. 

    Some of the discussion:

    • Classes of visual testing: 
      • problems with pixel to pixel testing
      • DOM comparisons, css, html, etc.
      • AI driven picture level testing, where failures look into the DOM to help describe the problem. 
    • Where visual testing fits into a test strategy.
    • Combining "does this look right" visual testing with other test workflows.
    • "A picture is worth a thousand assertions" - functional assertions built into visual testing.
    • Baselining pictures in the test workflow.

    Also discussed:

    • automation engineer
    • Test Automation University

    Links:

    • Test Automation University



    31 min
  • 140: Testing in Scientific Research and Academia - Martin Héroux

    Scientists learn programming as they need it.
     Some of them learn it in college, but even if they do, that's not their focus.
     It's not surprising that sharing the software used for scientific research and papers is spotty, at best.
     And what about testing?
     We'd hope that the software behind scientific research is tested.
     But why would we expect that?
     We're lucky if CS students get a class or two that even mentions automated tests.
     Why would we expect other scientists to just know how to test their code?

    Martin works in research and this discussion is about software and testing in scientific research and academia.


    Special Guest: Martin Héroux.


    Links:

    • Python Testing with pytest: Simple, Rapid, Effective, and Scalable
    • Test Driven Development: By Example
    • My reaction to "Is TDD Dead?" - Python Testing
    • MartinHeroux/pliffy: Plotting differences with Python
    • PyBites Code Challenges
    • Python Morsels
    • Martin Héroux (@martin_heroux) / Twitter
    • Scientifically Sound
    • ‪Martin Héroux‬ - ‪Google Scholar‬
    • spike2py · PyPI
    • pytest-mpl · PyPI



    48 min
  • 139: Test Automation: Shifting Testing Throughout the Software Lifecycle - Nalin Parbhu

    Talking with Nalin Parbhu about the software evolution towards more test automation and the creation of Infuse and useMango.

    We talk a software development and "shift left" where automated tests and quality checks have moved earlier into the software lifecycle.

    • Software approaches and where quality fits in
    • Shift left
    • Test automation
    • Roles of software developers, SDETs (software development engineer in test), testers, QA, etc.
    • Developers doing testing and devops
    • Automated testing vs manual testing
    • Regression testing, UI testing, black bock testing
    • Unit testing, white box, API, end to end testing
    • User acceptance testing (UAT)
    • Mullet Methodology (Agile at the front, Waterfall at the back)
    • Waterwheel Methodology (Requirements -> iterative development -> QA)
    • What's an agile team?
    • Developer resistance to testing
    • Manifesto for agile software development
    • Iterative development
    • Adapting to change
    • Agility: being able to change course quickly

    Special Guests: Nalin Parbhu and Ola Omiyale.





    36 min

About Test & Code

From the publisher's feed

The Python Test Podcast hosted by Brian Okken

More shows like Test & Code

Radiolab by WNYC Studios

Radiolab

43,853 Listeners

Software Engineering Daily by Software Engineering Daily

Software Engineering Daily

623 Listeners

Heavy Networking by Packet Pushers

Heavy Networking

327 Listeners

Talk Python To Me by Michael Kennedy

Talk Python To Me

582 Listeners

Python Bytes by Michael Kennedy and Calvin Hendryx-Parker

Python Bytes

213 Listeners

Darknet Diaries by Jack Rhysider

Darknet Diaries

8,059 Listeners

The Real Python Podcast by Real Python

The Real Python Podcast

139 Listeners

Unexplainable by Vox

Unexplainable

2,313 Listeners

Network Automation Nerds by Packet Pushers

Network Automation Nerds

5 Listeners