SlideShare a Scribd company logo
To



or not to



that is the question
MO CK
MO CK
To



or not to



that is the question
MO CK
MO CK
@anabalica
a treatise narrated by



from Potato of Londontowne.
ANA BALICA
Thou 

shalt 

write 

tests.
“ ”
William Shakespeare
Chapter one
Mocks simulate

the looks and behaviour 

of real objects
REAL
fig.1 fig.2
MOCK
mocks != stubs
✓ Setup
✓ Test
✓ Verify state
✓ Teardown
✓ Setup
✓ Setup expectations
✓ Test
✓ Verify expectations
✓ Verify state
✓ Teardown
Stubs Mocks
unittest.mock # Python 3.3
mock # Python 2.x
Mock()
Mock
>>> from mock import Mock
>>> m = Mock()
>>> m.foo = 1
>>> m.foo
1
>>> m.bar
<Mock name='mock.bar' id='4310136016'>
Mock()
MagicMock()
__lt__
__gt__
__len__
__iter__
__bool__
__str__
__int__
__hash__
__exit__
__sizeof__
Mock()
MagicMock()
patch()
from mock import patch
with patch('rainbow.Pony') as MockPony:
MockPony.return_value = 42
Patching
Patching
'rainbow.Pony'
# creatures.py
class Pony:
pass
# rainbow.py
from creatures import Pony
pony = Pony()
Mock the object where it’s used, 

not where it came from
Chapter two
Good
mocks
with patch.dict('os.environ', {'ANDROID_ARGUMENT': ''}):
pf = Platform()
self.assertTrue(pf == ‘android')
os.environ
System calls
@mock.patch('sys.stdout', new_callable=six.StringIO)
def test_print_live_refs_empty(self, stdout):
trackref.print_live_refs()
self.assertEqual(stdout.getvalue(),
'Live Referencesnnn')
sys.stdout
Streams
request.urlopen
@patch('django.utils.six.moves.urllib.request.urlopen')
def test_oembed_photo_request(self, urlopen):
urlopen.return_value = self.dummy_response
result = wagtail_oembed("http://www.youtube.com/watch/")
self.assertEqual(result['type'], 'photo')
Networking
@patch.object(DataLoader, '_get_file_contents')
def test_parse_json_from_file(self, mock_def):
mock_def.return_value = ('{"a": 1, "b": 2, "c": 3}', True)
output = self._loader.load_from_file('dummy_json.txt')
self.assertEqual(output, dict(a=1, b=2, c=3))
json.loads
IO operations
@mock.patch('time.sleep')
def test_500_retry(self, sleep_mock):
self.set_http_response(status_code=500)
# Create a bucket, a key and a file
with self.assertRaises(BotoServerError):
k.send_file(fail_file)
Clocks, time, timezones
time.sleep
with mock.patch('random.random', return_value=0.0):
with self.assertChanges(get_timeline_size, before=10, after=5):
backend.add(timeline, next(self.records))
random.random
Unpredictable results
✓ System calls
✓ Streams
✓ Networking
✓ IO operations
✓ Clocks, time,
timezones
✓ Unpredictable
results
✓ Save time
✓ Make impossible possible
✓ Exclude external dependencies
Why we like them
Chapter three
mocks
Bad
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertTrue(saved_pony.age, 3)
mock_save.assert_called_once()
Problems?
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertTrue(saved_pony.age, 3)
mock_save.assert_called_once()
Problems?
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertEqual(saved_pony.age, 3)
mock_save.assert_called_once()
Problems?
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertEqual(saved_pony.age, 3)
mock_save.assert_called_once()
Problems?
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertEqual(saved_pony.age, 3)
mock_save.assert_called_twice()
Problems?
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertEqual(saved_pony.age, 3)
mock_save.make_me_sandwich()
Problems?
¯_( )_/¯
Solution 1
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertEqual(saved_pony.age, 3)
mock_save.assert_called_once_with()
Solution 2
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertEqual(saved_pony.age, 3)
self.assertEqual(mock_save.call_count, 1)
Failure
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertEqual(saved_pony.age, 3)
self.assertEqual(mock_save.sandwich_count, 1)
Solution 3
Test Driven
Development
Problems?
with patch.object(Pony, 'save_base') as mock_save:
form = PonyForm(instance=pony, data=data)
self.assertTrue(form.is_valid())
saved_pony = form.save()
self.assertEqual(saved_pony.age, 3)
self.assertEqual(mock_save.call_count, 1)
Tests
pass?
SHIP IT!
Maybe 

it’s incomplete?
Integration tests
c = Client()
response = c.post('/pony/', {'age': 1})
self.assertEqual(response.status_code, 201)
Unit tests
Integration
tests
Mocks
Only mock types 

that you own
Building on

Third-Party

Code
Adapter

layer
3rd party
API
Application

objects
Adapter

layer
3rd party
API
Application

objects
Test
this
cluster
Mock this
Conclusions
Mocks

can be

dangerous
Passing faulty tests give a 

false sense of security
The end

More Related Content

What's hot

Python 2.5 reference card (2009)
Python 2.5 reference card (2009)Python 2.5 reference card (2009)
Python 2.5 reference card (2009)
gekiaruj
 
Python3 cheatsheet
Python3 cheatsheetPython3 cheatsheet
Python3 cheatsheet
Gil Cohen
 
Python_ 3 CheatSheet
Python_ 3 CheatSheetPython_ 3 CheatSheet
Python_ 3 CheatSheet
Dr. Volkan OBAN
 
Python Programming Essentials - M16 - Control Flow Statements and Loops
Python Programming Essentials - M16 - Control Flow Statements and LoopsPython Programming Essentials - M16 - Control Flow Statements and Loops
Python Programming Essentials - M16 - Control Flow Statements and Loops
P3 InfoTech Solutions Pvt. Ltd.
 
Tips and Tricks using the Preprocessor
Tips and Tricks using the Preprocessor Tips and Tricks using the Preprocessor
Tips and Tricks using the Preprocessor
skbansal222
 
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5 b...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5  b...Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5  b...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5 b...
ssuserd6b1fd
 
Python Programming: Data Structure
Python Programming: Data StructurePython Programming: Data Structure
Python Programming: Data Structure
Chan Shik Lim
 
Introduction to ad-3.4, an automatic differentiation library in Haskell
Introduction to ad-3.4, an automatic differentiation library in HaskellIntroduction to ad-3.4, an automatic differentiation library in Haskell
Introduction to ad-3.4, an automatic differentiation library in Haskell
nebuta
 
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 5 of 5 by...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 5 of 5 by...Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 5 of 5 by...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 5 of 5 by...
ssuserd6b1fd
 
iOS와 케라스의 만남
iOS와 케라스의 만남iOS와 케라스의 만남
iOS와 케라스의 만남
Mijeong Jeon
 
Exhibition of Atrocity
Exhibition of AtrocityExhibition of Atrocity
Exhibition of Atrocity
Michael Pirnat
 
Rooted 2010 ppp
Rooted 2010 pppRooted 2010 ppp
Rooted 2010 ppp
noc_313
 
Ruby - Uma Introdução
Ruby - Uma IntroduçãoRuby - Uma Introdução
Ruby - Uma Introdução
Ígor Bonadio
 
DConf 2016 std.database (a proposed interface & implementation)
DConf 2016 std.database (a proposed interface & implementation)DConf 2016 std.database (a proposed interface & implementation)
DConf 2016 std.database (a proposed interface & implementation)
cruisercoder
 
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 4 of 5 by...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 4 of 5 by...Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 4 of 5 by...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 4 of 5 by...
ssuserd6b1fd
 
Notes for C++ Programming / Object Oriented C++ Programming for MCA, BCA and ...
Notes for C++ Programming / Object Oriented C++ Programming for MCA, BCA and ...Notes for C++ Programming / Object Oriented C++ Programming for MCA, BCA and ...
Notes for C++ Programming / Object Oriented C++ Programming for MCA, BCA and ...
ssuserd6b1fd
 
프알못의 Keras 사용기
프알못의 Keras 사용기프알못의 Keras 사용기
프알못의 Keras 사용기
Mijeong Jeon
 
Unit 3
Unit 3 Unit 3
Unit 3
GOWSIKRAJAP
 
Mementopython3 english
Mementopython3 englishMementopython3 english
Mementopython3 english
ssuser442080
 

What's hot (19)

Python 2.5 reference card (2009)
Python 2.5 reference card (2009)Python 2.5 reference card (2009)
Python 2.5 reference card (2009)
 
Python3 cheatsheet
Python3 cheatsheetPython3 cheatsheet
Python3 cheatsheet
 
Python_ 3 CheatSheet
Python_ 3 CheatSheetPython_ 3 CheatSheet
Python_ 3 CheatSheet
 
Python Programming Essentials - M16 - Control Flow Statements and Loops
Python Programming Essentials - M16 - Control Flow Statements and LoopsPython Programming Essentials - M16 - Control Flow Statements and Loops
Python Programming Essentials - M16 - Control Flow Statements and Loops
 
Tips and Tricks using the Preprocessor
Tips and Tricks using the Preprocessor Tips and Tricks using the Preprocessor
Tips and Tricks using the Preprocessor
 
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5 b...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5  b...Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5  b...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 3 of 5 b...
 
Python Programming: Data Structure
Python Programming: Data StructurePython Programming: Data Structure
Python Programming: Data Structure
 
Introduction to ad-3.4, an automatic differentiation library in Haskell
Introduction to ad-3.4, an automatic differentiation library in HaskellIntroduction to ad-3.4, an automatic differentiation library in Haskell
Introduction to ad-3.4, an automatic differentiation library in Haskell
 
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 5 of 5 by...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 5 of 5 by...Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 5 of 5 by...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 5 of 5 by...
 
iOS와 케라스의 만남
iOS와 케라스의 만남iOS와 케라스의 만남
iOS와 케라스의 만남
 
Exhibition of Atrocity
Exhibition of AtrocityExhibition of Atrocity
Exhibition of Atrocity
 
Rooted 2010 ppp
Rooted 2010 pppRooted 2010 ppp
Rooted 2010 ppp
 
Ruby - Uma Introdução
Ruby - Uma IntroduçãoRuby - Uma Introdução
Ruby - Uma Introdução
 
DConf 2016 std.database (a proposed interface & implementation)
DConf 2016 std.database (a proposed interface & implementation)DConf 2016 std.database (a proposed interface & implementation)
DConf 2016 std.database (a proposed interface & implementation)
 
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 4 of 5 by...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 4 of 5 by...Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 4 of 5 by...
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 4 of 5 by...
 
Notes for C++ Programming / Object Oriented C++ Programming for MCA, BCA and ...
Notes for C++ Programming / Object Oriented C++ Programming for MCA, BCA and ...Notes for C++ Programming / Object Oriented C++ Programming for MCA, BCA and ...
Notes for C++ Programming / Object Oriented C++ Programming for MCA, BCA and ...
 
프알못의 Keras 사용기
프알못의 Keras 사용기프알못의 Keras 사용기
프알못의 Keras 사용기
 
Unit 3
Unit 3 Unit 3
Unit 3
 
Mementopython3 english
Mementopython3 englishMementopython3 english
Mementopython3 english
 

Similar to [PyCon2016]To mock or not to mock, that is the questions

Managing Mocks
Managing MocksManaging Mocks
Managing Mocks
Helen Sherwood-Taylor
 
Mockito with a hint of PowerMock
Mockito with a hint of PowerMockMockito with a hint of PowerMock
Mockito with a hint of PowerMock
Ying Zhang
 
Mocking in Java with Mockito
Mocking in Java with MockitoMocking in Java with Mockito
Mocking in Java with MockitoRichard Paul
 
Advanced Django
Advanced DjangoAdvanced Django
Advanced Django
Simon Willison
 
Mutation Testing: Testing your tests
Mutation Testing: Testing your testsMutation Testing: Testing your tests
Mutation Testing: Testing your tests
Stephen Leigh
 
java 8 Hands on Workshop
java 8 Hands on Workshopjava 8 Hands on Workshop
java 8 Hands on Workshop
Jeanne Boyarsky
 
Python testing using mock and pytest
Python testing using mock and pytestPython testing using mock and pytest
Python testing using mock and pytest
Suraj Deshmukh
 
Oct27
Oct27Oct27
Oct27
Tak Lee
 
Quality Python Homework Help
Quality Python Homework HelpQuality Python Homework Help
Quality Python Homework Help
Python Homework Help
 
JavaScript Proven Practises
JavaScript Proven PractisesJavaScript Proven Practises
JavaScript Proven PractisesRobert MacLean
 
Spock Framework
Spock FrameworkSpock Framework
Spock Framework
Daniel Kolman
 
Spock Framework - Slidecast
Spock Framework - SlidecastSpock Framework - Slidecast
Spock Framework - Slidecast
Daniel Kolman
 
How to fake_properly
How to fake_properlyHow to fake_properly
How to fake_properly
Rainer Schuettengruber
 
Test Infected Presentation
Test Infected PresentationTest Infected Presentation
Test Infected Presentation
willmation
 
Python fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuanPython fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuan
Wei-Yuan Chang
 
Easy mockppt
Easy mockpptEasy mockppt
Easy mockppt
subha chandra
 
Writing Macros
Writing MacrosWriting Macros
Writing Macros
RueiCi Wang
 
Container adapters
Container adaptersContainer adapters
Container adapters
mohamed sikander
 
Mastering Mock Objects - Advanced Unit Testing for Java
Mastering Mock Objects - Advanced Unit Testing for JavaMastering Mock Objects - Advanced Unit Testing for Java
Mastering Mock Objects - Advanced Unit Testing for Java
Denilson Nastacio
 

Similar to [PyCon2016]To mock or not to mock, that is the questions (20)

Rhino Mocks
Rhino MocksRhino Mocks
Rhino Mocks
 
Managing Mocks
Managing MocksManaging Mocks
Managing Mocks
 
Mockito with a hint of PowerMock
Mockito with a hint of PowerMockMockito with a hint of PowerMock
Mockito with a hint of PowerMock
 
Mocking in Java with Mockito
Mocking in Java with MockitoMocking in Java with Mockito
Mocking in Java with Mockito
 
Advanced Django
Advanced DjangoAdvanced Django
Advanced Django
 
Mutation Testing: Testing your tests
Mutation Testing: Testing your testsMutation Testing: Testing your tests
Mutation Testing: Testing your tests
 
java 8 Hands on Workshop
java 8 Hands on Workshopjava 8 Hands on Workshop
java 8 Hands on Workshop
 
Python testing using mock and pytest
Python testing using mock and pytestPython testing using mock and pytest
Python testing using mock and pytest
 
Oct27
Oct27Oct27
Oct27
 
Quality Python Homework Help
Quality Python Homework HelpQuality Python Homework Help
Quality Python Homework Help
 
JavaScript Proven Practises
JavaScript Proven PractisesJavaScript Proven Practises
JavaScript Proven Practises
 
Spock Framework
Spock FrameworkSpock Framework
Spock Framework
 
Spock Framework - Slidecast
Spock Framework - SlidecastSpock Framework - Slidecast
Spock Framework - Slidecast
 
How to fake_properly
How to fake_properlyHow to fake_properly
How to fake_properly
 
Test Infected Presentation
Test Infected PresentationTest Infected Presentation
Test Infected Presentation
 
Python fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuanPython fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuan
 
Easy mockppt
Easy mockpptEasy mockppt
Easy mockppt
 
Writing Macros
Writing MacrosWriting Macros
Writing Macros
 
Container adapters
Container adaptersContainer adapters
Container adapters
 
Mastering Mock Objects - Advanced Unit Testing for Java
Mastering Mock Objects - Advanced Unit Testing for JavaMastering Mock Objects - Advanced Unit Testing for Java
Mastering Mock Objects - Advanced Unit Testing for Java
 

More from Ana Balica

How to write a good commit message
How to write a good commit messageHow to write a good commit message
How to write a good commit message
Ana Balica
 
DJUGL 2015 Signals and AppConfig
DJUGL 2015 Signals and AppConfigDJUGL 2015 Signals and AppConfig
DJUGL 2015 Signals and AppConfig
Ana Balica
 
[EuroPython2015] Demystifying Mixins with Django
[EuroPython2015] Demystifying Mixins with Django[EuroPython2015] Demystifying Mixins with Django
[EuroPython2015] Demystifying Mixins with Django
Ana Balica
 
[Djangocon2015][Lightning talk] Systers
[Djangocon2015][Lightning talk] Systers[Djangocon2015][Lightning talk] Systers
[Djangocon2015][Lightning talk] Systers
Ana Balica
 
[Djangocon2015] Demystifying mixins with Django
[Djangocon2015] Demystifying mixins with Django[Djangocon2015] Demystifying mixins with Django
[Djangocon2015] Demystifying mixins with Django
Ana Balica
 
Debugging with pdb in Python
Debugging with pdb in PythonDebugging with pdb in Python
Debugging with pdb in Python
Ana Balica
 

More from Ana Balica (6)

How to write a good commit message
How to write a good commit messageHow to write a good commit message
How to write a good commit message
 
DJUGL 2015 Signals and AppConfig
DJUGL 2015 Signals and AppConfigDJUGL 2015 Signals and AppConfig
DJUGL 2015 Signals and AppConfig
 
[EuroPython2015] Demystifying Mixins with Django
[EuroPython2015] Demystifying Mixins with Django[EuroPython2015] Demystifying Mixins with Django
[EuroPython2015] Demystifying Mixins with Django
 
[Djangocon2015][Lightning talk] Systers
[Djangocon2015][Lightning talk] Systers[Djangocon2015][Lightning talk] Systers
[Djangocon2015][Lightning talk] Systers
 
[Djangocon2015] Demystifying mixins with Django
[Djangocon2015] Demystifying mixins with Django[Djangocon2015] Demystifying mixins with Django
[Djangocon2015] Demystifying mixins with Django
 
Debugging with pdb in Python
Debugging with pdb in PythonDebugging with pdb in Python
Debugging with pdb in Python
 

Recently uploaded

Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 

Recently uploaded (20)

Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 

[PyCon2016]To mock or not to mock, that is the questions