Hướng dẫn python spoof phone number - python giả mạo số điện thoại

Gần đây tôi đã thực sự quan tâm đến giọng nói qua IP, tôi nghĩ rằng có rất nhiều sức mạnh trong đó. Tôi đã sử dụng Asterisk, nhưng tôi đã chuyển sang một giải pháp tốt hơn và mạnh mẽ hơn nhiều, giải phóng. Tôi đã chơi với nó gần đây và quyết định một giao diện giả mạo ID người gọi sẽ rất thú vị.

Khi tập lệnh sau được chạy, nó sẽ nhắc bạn cho một mã truy cập và nếu nó đúng, nó sẽ cho phép bạn chỉ định một số để giả mạo và một số để gọi. Nó vui :). Ngoài ra, nó có thể gửi email bất cứ khi nào một cuộc gọi giả mạo được thực hiện (ví dụ nếu bạn muốn theo dõi việc sử dụng bạn bè của mình).

Để sử dụng tập lệnh sau, hãy đặt cái này vào mặt số của bạn: (Tôi đã đặt giả mạo.py trong gói fspy.)

 action="python" data="fspy.spoof"/>

spoof.py

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)

Mới trong phiên bản 3.3.

Mã nguồn: lib/unittest/mock.py Lib/unittest/mock.py


import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
32 là một thư viện để thử nghiệm trong Python. Nó cho phép bạn thay thế các phần của hệ thống của bạn được thử nghiệm bằng các đối tượng giả và đưa ra các xác nhận về cách chúng đã được sử dụng.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
32 cung cấp lớp lõi
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 Loại bỏ sự cần thiết phải tạo một loạt các cuống trong suốt bộ thử nghiệm của bạn. Sau khi thực hiện một hành động, bạn có thể đưa ra các xác nhận về phương thức / thuộc tính nào đã được sử dụng và các đối số mà chúng được gọi. Bạn cũng có thể chỉ định các giá trị trả về và đặt các thuộc tính cần thiết theo cách thông thường.

Ngoài ra, Mock cung cấp một trình trang trí

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 xử lý mô -đun vá và các thuộc tính cấp lớp trong phạm vi của một bài kiểm tra, cùng với
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
36 để tạo các đối tượng độc đáo. Xem hướng dẫn nhanh để biết một số ví dụ về cách sử dụng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34,
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35.

Mock được thiết kế để sử dụng với

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
40 và dựa trên mẫu ‘hành động -> khẳng định thay vì‘ bản ghi -> phát lại được sử dụng bởi nhiều khung bắt buộc.

Có một backport là

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
32 cho các phiên bản Python trước đó, có sẵn dưới dạng giả trên PYPI.

Hướng dẫn nhanh¶

Các đối tượng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 Tạo tất cả các thuộc tính và phương thức khi bạn truy cập chúng và lưu trữ chi tiết về cách chúng đã được sử dụng. Bạn có thể định cấu hình chúng, để chỉ định các giá trị trả về hoặc giới hạn các thuộc tính có sẵn và sau đó đưa ra các xác nhận về cách chúng đã được sử dụng:

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 cho phép bạn thực hiện các tác dụng phụ, bao gồm cả việc tăng ngoại lệ khi một giả được gọi:

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)

Mock có nhiều cách khác mà bạn có thể định cấu hình và kiểm soát hành vi của nó. Ví dụ, đối số Spec cấu hình giả để lấy thông số kỹ thuật của nó từ một đối tượng khác. Cố gắng truy cập các thuộc tính hoặc phương thức trên chế độ giả mà don lồng tồn tại trên thông số kỹ thuật sẽ thất bại với

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
45.

Bộ trang trí / Trình quản lý bối cảnh

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 giúp dễ dàng chế giễu các lớp hoặc đối tượng trong một mô -đun được thử nghiệm. Đối tượng bạn chỉ định sẽ được thay thế bằng một giả (hoặc đối tượng khác) trong quá trình kiểm tra và khôi phục khi thử nghiệm kết thúc:

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()

Ghi chú

Khi bạn làm tổ trang trí, các chế độ giả được chuyển vào chức năng được trang trí theo cùng thứ tự chúng được áp dụng (thứ tự python bình thường mà các nhà trang trí được áp dụng). Điều này có nghĩa là từ dưới lên, vì vậy trong ví dụ trên giả cho

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
47 được thông qua đầu tiên.

Với

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35, vấn đề là bạn vá các đối tượng trong không gian tên nơi chúng được nhìn lên. Điều này thường đơn giản, nhưng đối với một hướng dẫn nhanh, hãy đọc nơi để vá.where to patch.

Cũng như một người trang trí

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 có thể được sử dụng làm trình quản lý bối cảnh trong một câu lệnh:

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)

Ngoài ra còn có

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 để thiết lập các giá trị trong một từ điển chỉ trong một phạm vi và khôi phục từ điển về trạng thái ban đầu của nó khi thử nghiệm kết thúc:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original

Mock hỗ trợ việc chế giễu các phương pháp ma thuật Python. Cách dễ nhất để sử dụng các phương thức ma thuật là với lớp

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38. Nó cho phép bạn làm những việc như:magic methods. The easiest way of using magic methods is with the
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 class. It allows you to do things like:

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()

Mock cho phép bạn gán các chức năng (hoặc các phiên bản giả khác) cho các phương thức ma thuật và chúng sẽ được gọi là thích hợp. Lớp

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 chỉ là một biến thể giả có tất cả các phương pháp ma thuật được tạo sẵn cho bạn (tốt, tất cả đều là những phương pháp hữu ích).

Sau đây là một ví dụ về việc sử dụng các phương thức ma thuật với lớp giả thông thường:

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'

Để đảm bảo rằng các đối tượng giả trong các thử nghiệm của bạn có cùng API với các đối tượng chúng đang thay thế, bạn có thể sử dụng tự động. Tự động sử dụng có thể được thực hiện thông qua đối số Autospec thành bản vá hoặc hàm

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
53. Tự động tạo ra các đối tượng giả có cùng thuộc tính và phương thức như các đối tượng chúng đang thay thế, và bất kỳ hàm và phương thức nào (bao gồm cả các hàm tạo) đều có chữ ký cuộc gọi giống như đối tượng thực.auto-speccing. Auto-speccing can be done through the autospec argument to patch, or the
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
53 function. Auto-speccing creates mock objects that have the same attributes and methods as the objects they are replacing, and any functions and methods (including constructors) have the same call signature as the real object.

Điều này đảm bảo rằng giả của bạn sẽ thất bại theo cách tương tự như mã sản xuất của bạn nếu chúng được sử dụng không chính xác:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
0

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
53 cũng có thể được sử dụng trên các lớp, trong đó nó sao chép chữ ký của phương thức
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
55 và trên các đối tượng có thể gọi được trong đó nó sao chép chữ ký của phương thức
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
56.

Lớp giả

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 là một đối tượng giả linh hoạt nhằm thay thế việc sử dụng các cuống và kiểm tra đôi trong suốt mã của bạn. Mocks có thể gọi được và tạo các thuộc tính dưới dạng giả mới khi bạn truy cập chúng 1. Truy cập cùng một thuộc tính sẽ luôn trả về cùng một giả. Mocks ghi lại cách bạn sử dụng chúng, cho phép bạn đưa ra các xác nhận về những gì mã của bạn đã làm với chúng.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 là một lớp con của
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 với tất cả các phương pháp ma thuật được tạo sẵn và sẵn sàng để sử dụng. Ngoài ra còn có các biến thể không thể gọi được, hữu ích khi bạn đang chế giễu các đối tượng có thể gọi được:
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
60 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
61

Các nhà trang trí

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 giúp dễ dàng thay thế các lớp trong một mô -đun cụ thể bằng một đối tượng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34. Theo mặc định
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 sẽ tạo
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 cho bạn. Bạn có thể chỉ định một lớp thay thế của
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 bằng cách sử dụng đối số new_callable thành
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35.

classunittest.mock.mock (spec = none, side_effect = none, return_value = default, wraps = none, name = none, spec_set = noneunittest.mock.Mock(spec=None, side_effect=None, return_value=DEFAULT, wraps=None, name=None, spec_set=None, unsafe=False, **kwargs)

Tạo một đối tượng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 mới.
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 có một số đối số tùy chọn chỉ định hành vi của đối tượng giả:

  • Spec: Đây có thể là một danh sách các chuỗi hoặc một đối tượng hiện có (một lớp hoặc thể hiện) đóng vai trò là đặc điểm kỹ thuật cho đối tượng giả. Nếu bạn chuyển trong một đối tượng thì một danh sách các chuỗi được hình thành bằng cách gọi DIR trên đối tượng (không bao gồm các thuộc tính và phương thức ma thuật không được hỗ trợ). Truy cập bất kỳ thuộc tính nào không trong danh sách này sẽ tăng

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    45.

    Nếu Spec là một đối tượng (chứ không phải là danh sách các chuỗi) thì

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    71 sẽ trả về lớp của đối tượng Spec. Điều này cho phép Mocks vượt qua các bài kiểm tra
    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    72.

  • spec_set: một biến thể chặt chẽ hơn của thông số kỹ thuật. Nếu được sử dụng, cố gắng đặt hoặc nhận một thuộc tính trên chế độ giả trên đối tượng được truyền vì spec_set sẽ tăng

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    45.

  • Side_Effect: Một chức năng được gọi bất cứ khi nào giả được gọi. Xem thuộc tính

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    44. Hữu ích để nâng cao các ngoại lệ hoặc thay đổi một cách tự động các giá trị trả về. Hàm được gọi với cùng các đối số với giả và trừ khi nó trả về
    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    75, giá trị trả về của hàm này được sử dụng làm giá trị trả về.

    Ngoài ra, Side_Effect có thể là một lớp hoặc thể hiện ngoại lệ. Trong trường hợp này, ngoại lệ sẽ được nâng lên khi giả được gọi.

    Nếu Side_Effect là một điều có thể có được thì mỗi cuộc gọi cho Mock sẽ trả về giá trị tiếp theo từ Itable.

    Một side_effect có thể được xóa bằng cách đặt nó thành

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    76.

  • return_value: giá trị được trả về khi giả được gọi. Theo mặc định, đây là một giả mới (được tạo trên truy cập đầu tiên). Xem thuộc tính

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    77.

  • Không an toàn: Theo mặc định, việc truy cập bất kỳ thuộc tính nào có tên bắt đầu bằng Assert, Assret, Asert, Aseert hoặc Assrt sẽ tăng

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    45. Vượt qua
    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    79 sẽ cho phép truy cập vào các thuộc tính này.

    Mới trong phiên bản 3.5.

  • Wraps: Mục cho đối tượng giả để bọc. Nếu Wraps không phải là

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    76 thì việc gọi Mock sẽ chuyển cuộc gọi qua đối tượng được gói (trả về kết quả thực). Truy cập thuộc tính trên giả sẽ trả về một đối tượng giả kết thúc thuộc tính tương ứng của đối tượng được bọc (do đó, cố gắng truy cập một thuộc tính không tồn tại sẽ tăng
    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    45).

    Nếu Mock có một bộ trả về rõ ràng_value thì các cuộc gọi không được chuyển đến đối tượng được bọc và thay vào đó, return_value được trả về.

  • Tên: Nếu giả có một tên thì nó sẽ được sử dụng trong repr of the Mock. Điều này có thể hữu ích để gỡ lỗi. Tên được nhân giống đến chế giễu trẻ em.

Mocks cũng có thể được gọi với các đối số từ khóa tùy ý. Chúng sẽ được sử dụng để đặt các thuộc tính trên giả sau khi nó được tạo. Xem phương thức

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
82 để biết chi tiết.

assert_called () ¶()

Khẳng định rằng giả được gọi ít nhất một lần.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
1

Mới trong phiên bản 3.6.

assert_called_once () ¶()

Khẳng định rằng giả được gọi là chính xác một lần.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
2

Mới trong phiên bản 3.6.

assert_called_once () ¶(*args, **kwargs)

Khẳng định rằng giả được gọi là chính xác một lần.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
3

assert_called_with (*args, ** kwargs) ¶(*args, **kwargs)

Phương pháp này là một cách thuận tiện để khẳng định rằng cuộc gọi cuối cùng đã được thực hiện theo một cách cụ thể:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
4

assert_called_once_with (*args, ** kwargs) ¶(*args, **kwargs)

Khẳng định rằng giả được gọi là chính xác một lần và cuộc gọi đó là với các đối số được chỉ định.

assert_any_call (*args, ** kwargs) ¶

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
5

khẳng định giả đã được gọi với các đối số được chỉ định.(calls, any_order=False)

Assert vượt qua nếu giả đã được gọi, không giống như

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
83 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
84 chỉ vượt qua nếu cuộc gọi là cuộc gọi gần đây nhất, và trong trường hợp
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
84 cũng phải là cuộc gọi duy nhất.

assert_has_calls (cuộc gọi, any_order = false) ¶

khẳng định giả đã được gọi với các cuộc gọi được chỉ định. Danh sách

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86 được kiểm tra các cuộc gọi.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
6

Nếu Any_order là sai thì các cuộc gọi phải được tuần tự. Có thể có thêm các cuộc gọi trước hoặc sau các cuộc gọi được chỉ định.()

Nếu Any_order là đúng thì các cuộc gọi có thể theo bất kỳ thứ tự nào, nhưng tất cả chúng phải xuất hiện trong

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
7

assert_not_called () ¶

Khẳng định giả không bao giờ được gọi.(*, return_value=False, side_effect=False)

Mới trong phiên bản 3.5.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
8

reset_mock (*, return_value = false, side_effect = false) ¶Added two keyword only argument to the reset_mock function.

Phương thức reset_mock đặt lại tất cả các thuộc tính cuộc gọi trên một đối tượng giả:

Đã thay đổi trong phiên bản 3.6: Đã thêm hai đối số từ khóa vào chức năng reset_mock.

Điều này có thể hữu ích khi bạn muốn thực hiện một loạt các xác nhận sử dụng lại cùng một đối tượng. Lưu ý rằng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
88 không rõ giá trị trả về,
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 hoặc bất kỳ thuộc tính con nào bạn đã đặt bằng cách sử dụng gán thông thường theo mặc định. Trong trường hợp bạn muốn đặt lại return_value hoặc
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44, thì hãy truyền tham số tương ứng là
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
91. Trẻ em chế giễu và giá trị trả lại giả (nếu có) cũng được đặt lại.

Ghi chú(spec, spec_set=False)

return_value và

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 chỉ là đối số từ khóa.

Mock_add_spec (spec, spec_set = false) ¶

Thêm một thông số kỹ thuật vào một giả. Thông số kỹ thuật có thể là một đối tượng hoặc một danh sách các chuỗi. Chỉ các thuộc tính trên thông số kỹ thuật mới có thể được tìm nạp dưới dạng các thuộc tính từ giả.(mock, attribute)

Nếu spec_set là đúng thì chỉ có thể đặt các thuộc tính trên thông số kỹ thuật.

bomptep_mock (giả, thuộc tính) ¶(**kwargs)

Đính kèm một giả làm một thuộc tính của cái này, thay thế tên và cha mẹ của nó. Các cuộc gọi đến Mock đính kèm sẽ được ghi lại trong các thuộc tính

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
93 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86 của cái này.

Cấu hình_mock (** kwargs) ¶

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
9

Đặt các thuộc tính trên giả thông qua các đối số từ khóa.

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
0

Các thuộc tính cộng với các giá trị trả về và các tác dụng phụ có thể được đặt trên các chế giễu trẻ em bằng cách sử dụng ký hiệu dấu chấm tiêu chuẩn và giải nén từ điển trong cuộc gọi phương thức:

Điều tương tự có thể đạt được trong cuộc gọi xây dựng đến Mocks:()

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
82 tồn tại để làm cho cấu hình dễ dàng hơn sau khi giả được tạo.

__dir __ ()

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 Các đối tượng giới hạn kết quả của
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
97 là kết quả hữu ích. Đối với các chế giễu với một thông số kỹ thuật này bao gồm tất cả các thuộc tính được phép cho giả.
(**kw)

Xem

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
98 để biết những gì bộ lọc này làm và cách tắt nó.

_get_child_mock (** kw) ¶

Tạo các chế giễu trẻ em cho các thuộc tính và giá trị trả về. Theo mặc định, chế giễu trẻ em sẽ có cùng loại với cha mẹ. Các lớp con của Mock có thể muốn ghi đè lên điều này để tùy chỉnh cách chế tạo trẻ em.

Đối với giả không thể gọi, biến thể có thể gọi sẽ được sử dụng (thay vì bất kỳ lớp con tùy chỉnh nào).

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
1

gọi là¶

Một boolean đại diện cho việc đối tượng giả có được gọi là:

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
2

Call_Count¶

Một số nguyên cho bạn biết bao nhiêu lần đối tượng giả đã được gọi:

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
3

return_value¶

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
4

Đặt cái này để định cấu hình giá trị được trả về bằng cách gọi Mock:

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
5

Giá trị trả về mặc định là một đối tượng giả và bạn có thể định cấu hình nó theo cách thông thường:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
77 cũng có thể được đặt trong hàm tạo:

tác dụng phụ¶

Đây có thể là một chức năng được gọi khi giả được gọi, một điều khác biệt hoặc một ngoại lệ (lớp hoặc thể hiện) sẽ được nêu ra.

Một ví dụ về một chế độ giả tạo ra một ngoại lệ (để kiểm tra ngoại lệ xử lý API):

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
6

Sử dụng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 để trả về một chuỗi các giá trị:

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
7

Sử dụng một cuộc gọi có thể gọi được:

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
8

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 có thể được đặt trong hàm tạo. Ở đây, một ví dụ thêm một vào giá trị mà giả được gọi và trả về nó:

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
9

Cài đặt

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 thành
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
76 Xóa nó:

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
0

Call_args¶

Đây là

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
76 (nếu giả đã được gọi), hoặc các lập luận mà giả được gọi lần cuối. Điều này sẽ ở dạng một tuple: thành viên đầu tiên, cũng có thể được truy cập thông qua thuộc tính
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
09, là bất kỳ đối số được đặt hàng nào mà Mock được gọi với (hoặc một tuple trống) và thành viên thứ hai, cũng có thể được truy cập thông qua Thuộc tính
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
10, là bất kỳ đối số từ khóa nào (hoặc từ điển trống).

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
1

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
11, cùng với các thành viên của danh sách
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
12,
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
93 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86 là các đối tượng
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
15. Đây là những bộ dữ liệu, vì vậy chúng có thể được giải nén để có được các đối số riêng lẻ và đưa ra những khẳng định phức tạp hơn. Xem các cuộc gọi là Tuples.calls as tuples.

Đã thay đổi trong phiên bản 3.8: Đã thêm các thuộc tính

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
09 và
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
10.Added
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
09 and
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
10 properties.

call_args_list¶

Đây là danh sách tất cả các cuộc gọi được thực hiện cho đối tượng giả theo trình tự (vì vậy độ dài của danh sách là số lần nó được gọi). Trước khi bất kỳ cuộc gọi nào được thực hiện, nó là một danh sách trống. Đối tượng

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
15 có thể được sử dụng để xây dựng một cách thuận tiện các danh sách các cuộc gọi để so sánh với
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
12.

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
2

Các thành viên của

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
12 là đối tượng
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
15. Đây có thể được giải nén dưới dạng bộ dữ liệu để có được các đối số riêng lẻ. Xem các cuộc gọi là Tuples.calls as tuples.

Phương pháp_Calls¶

Cũng như theo dõi các cuộc gọi đến chính họ, các chế giễu cũng theo dõi các cuộc gọi đến các phương thức và thuộc tính, và các phương thức và thuộc tính của chúng:

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
3

Các thành viên của

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
93 là đối tượng
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
15. Đây có thể được giải nén dưới dạng bộ dữ liệu để có được các đối số riêng lẻ. Xem các cuộc gọi là Tuples.calls as tuples.

Mock_calls¶

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86 ghi lại tất cả các cuộc gọi đến đối tượng giả, các phương thức, phương thức ma thuật và chế giễu giá trị trả về.

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
4

Các thành viên của

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86 là đối tượng
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
15. Đây có thể được giải nén dưới dạng bộ dữ liệu để có được các đối số riêng lẻ. Xem các cuộc gọi là Tuples.calls as tuples.

Ghi chú

Cách

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86 được ghi lại có nghĩa là nơi các cuộc gọi lồng nhau được thực hiện, các tham số của các cuộc gọi tổ tiên không được ghi lại và do đó sẽ luôn so sánh bằng nhau:

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
5

__lớp__¶

Thông thường thuộc tính

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
71 của một đối tượng sẽ trả về loại của nó. Đối với một đối tượng giả với
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
29,
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
71 trả về lớp Spec. Điều này cho phép các đối tượng giả vượt qua các thử nghiệm
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
72 cho đối tượng họ đang thay thế / giả dạng như:

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
6

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
71 có thể được gán cho, điều này cho phép một chế độ giả vượt qua kiểm tra
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
72 mà không buộc bạn sử dụng thông số kỹ thuật:

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
7

classunittest.mock.noncallablemock (spec = none, wraps = none, name = none, spec_set = none, ** kwargs) ¶unittest.mock.NonCallableMock(spec=None, wraps=None, name=None, spec_set=None, **kwargs)

Một phiên bản không thể gọi của

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34. Các tham số của hàm tạo có cùng ý nghĩa của
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34, ngoại trừ return_value và side_effect không có ý nghĩa trên một giả không thể gọi được.

Các đối tượng giả sử dụng một lớp hoặc một thể hiện dưới dạng

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
29 hoặc
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
37 có thể vượt qua các bài kiểm tra
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
72:

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
8

Các lớp

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 có hỗ trợ cho các phương pháp ma thuật chế giễu. Xem Phương pháp ma thuật để biết chi tiết đầy đủ.magic methods for the full details.

Các lớp giả và các nhà trang trí

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 đều có các đối số từ khóa tùy ý cho cấu hình. Đối với các nhà trang trí
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35, các từ khóa được chuyển cho hàm tạo của giả được tạo. Các đối số từ khóa là để định cấu hình các thuộc tính của giả:

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
9

Giá trị trả về và tác dụng phụ của giả trẻ em có thể được đặt theo cùng một cách, sử dụng ký hiệu chấm. Vì bạn có thể sử dụng các tên chấm trực tiếp trong một cuộc gọi, bạn phải tạo một từ điển và giải nén nó bằng cách sử dụng

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
42:

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
0

Một chế độ giả có thể gọi được được tạo ra với một thông số kỹ thuật (hoặc một spec_set) sẽ hướng nội vào chữ ký của đối tượng đặc tả khi khớp các cuộc gọi với giả. Do đó, nó có thể khớp với các đối số cuộc gọi thực tế bất kể chúng được thông qua vị trí hay theo tên:

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
1

Điều này áp dụng cho

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
83,
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
84,
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
45 và
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
46. Khi tự động hóa, nó cũng sẽ áp dụng cho các cuộc gọi phương thức trên đối tượng giả.Autospeccing, it will also apply to method calls on the mock object.

Đã thay đổi trong phiên bản 3.4: Đã thêm hướng nội chữ ký trên các đối tượng giả và tự động.Added signature introspection on specced and autospecced mock objects.

classunittest.mock.propertymock (*args, ** kwargs) ¶unittest.mock.PropertyMock(*args, **kwargs)

Một giả dự định được sử dụng làm tài sản hoặc mô tả khác trên một lớp.

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
47 cung cấp các phương thức
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
48 và
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
49 để bạn có thể chỉ định giá trị trả về khi nó được tìm nạp.

Tìm nạp một thể hiện

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
47 từ một đối tượng gọi là giả, không có args. Đặt nó gọi là giả với giá trị được đặt.

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
2

Do cách lưu trữ các thuộc tính giả, bạn có thể gắn trực tiếp một

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
47 vào một đối tượng giả. Thay vào đó, bạn có thể gắn nó vào đối tượng loại giả:

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
3

classunittest.mock.asyncmock (spec = none, side_effect = none, return_value = default, wraps = none, name = none, spec_set = none, không an toàn = false unittest.mock.AsyncMock(spec=None, side_effect=None, return_value=DEFAULT, wraps=None, name=None, spec_set=None, unsafe=False, **kwargs)

Một phiên bản không đồng bộ của

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38. Đối tượng
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
53 sẽ hoạt động để đối tượng được công nhận là hàm async và kết quả của một cuộc gọi là một cuộc gọi có thể chờ đợi.

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
4

Kết quả của

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
54 là một hàm Async sẽ có kết quả của
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 hoặc
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
77 sau khi nó đã được chờ đợi:

  • Nếu

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    44 là một hàm, hàm async sẽ trả về kết quả của hàm đó,

  • Nếu

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    44 là một ngoại lệ, hàm async sẽ tăng ngoại lệ,

  • Tuy nhiên, nếu

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    44 là một điều không thể điều chỉnh được, thì hàm async sẽ trả về giá trị tiếp theo của điều đó, tuy nhiên, nếu chuỗi kết quả bị cạn kiệt,
    >>> from unittest.mock import MagicMock
    >>> thing = ProductionClass()
    >>> thing.method = MagicMock(return_value=3)
    >>> thing.method(3, 4, 5, key='value')
    3
    >>> thing.method.assert_called_with(3, 4, 5, key='value')
    
    60 sẽ được nâng lên ngay lập tức,

  • Nếu

    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    44 không được xác định, hàm async sẽ trả về giá trị được xác định bởi
    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    77, do đó, theo mặc định, hàm async trả về một đối tượng
    >>> from unittest.mock import MagicMock
    >>> thing = ProductionClass()
    >>> thing.method = MagicMock(return_value=3)
    >>> thing.method(3, 4, 5, key='value')
    3
    >>> thing.method.assert_called_with(3, 4, 5, key='value')
    
    53 mới.

Đặt thông số kỹ thuật của

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 hoặc
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 thành hàm async sẽ dẫn đến một đối tượng coroutine được trả về sau khi gọi.

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
5

Đặt thông số của

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34,
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 hoặc
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
53 cho một lớp có hàm đồng bộ và đồng bộ sẽ tự động phát hiện các hàm đồng bộ và đặt chúng là
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 . Tất cả các chức năng không đồng bộ sẽ là
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
53.

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
6

Mới trong phiên bản 3.8.

assert_awaited ()()

Khẳng định rằng giả đã được chờ đợi ít nhất một lần. Lưu ý rằng điều này tách biệt với đối tượng đã được gọi, từ khóa

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
75 phải được sử dụng:

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
7

assert_awaited_once () ¶()

Khẳng định rằng giả đã được chờ đợi chính xác một lần.

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
8

assert_awaited_with (*args, ** kwargs) ¶(*args, **kwargs)

Khẳng định rằng cuối cùng đang chờ đợi là với các đối số được chỉ định.

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
9

assert_awaited_once_with (*args, ** kwargs) ¶(*args, **kwargs)

Khẳng định rằng giả đã được chờ đợi chính xác một lần và với các đối số được chỉ định.

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
0

assert_any_await (*args, ** kwargs) ¶(*args, **kwargs)

Khẳng định giả đã từng được chờ đợi với các đối số được chỉ định.

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
1

assert_has_awaits (cuộc gọi, any_order = false) ¶(calls, any_order=False)

Khẳng định giả đã được chờ đợi với các cuộc gọi được chỉ định. Danh sách

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
76 được kiểm tra các bản chờ.

Nếu Any_order là sai thì các chờ đợi phải được tuần tự. Có thể có thêm các cuộc gọi trước hoặc sau khi được chỉ định đang chờ.

Nếu Any_order là đúng thì các chờ đợi có thể theo bất kỳ thứ tự nào, nhưng tất cả chúng phải xuất hiện trong

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
76.

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
2

assert_not_awaited () ¶()

Khẳng định rằng giả không bao giờ được chờ đợi.

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
3

reset_mock (*args, ** kwargs) ¶(*args, **kwargs)

Xem

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
78. Cũng đặt
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
79 thành 0,
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
80 thành không có và xóa
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
76.

Await_Count¶

Một số nguyên theo dõi số lần đối tượng giả đã được chờ đợi.

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
4

Await_args¶

Đây là

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
76 (nếu giả đã được chờ đợi), hoặc các lập luận mà giả được chờ đợi lần cuối. Có chức năng giống như
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
83.

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
5

Await_args_list¶

Đây là danh sách tất cả các phần đang chờ được thực hiện cho đối tượng giả theo trình tự (vì vậy độ dài của danh sách là số lần nó đã được chờ đợi). Trước khi bất kỳ sự chờ đợi đã được thực hiện, nó là một danh sách trống.

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
6

Gọi tắt

Đối tượng giả có thể gọi được. Cuộc gọi sẽ trả về giá trị được đặt làm thuộc tính

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
77. Giá trị trả về mặc định là một đối tượng giả mới; Nó được tạo ra lần đầu tiên giá trị trả về được truy cập (rõ ràng hoặc bằng cách gọi giả) - nhưng nó được lưu trữ và cùng một lần trả về mỗi lần.

Các cuộc gọi được thực hiện cho đối tượng sẽ được ghi lại trong các thuộc tính như

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
11 và
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
12.

Nếu

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 được đặt thì nó sẽ được gọi sau khi cuộc gọi đã được ghi lại, vì vậy nếu
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 sẽ đặt ra một ngoại lệ, cuộc gọi vẫn được ghi lại.

Cách đơn giản nhất để làm cho một chế độ giả tạo ra một ngoại lệ khi được gọi là biến

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 thành một lớp hoặc thể hiện ngoại lệ:

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
7

Nếu

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 là một chức năng thì bất cứ điều gì mà hàm đó trả về là những gì gọi cho sự trở lại giả. Hàm
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 được gọi với các đối số tương tự như giả. Điều này cho phép bạn thay đổi giá trị trả về của cuộc gọi một cách linh hoạt, dựa trên đầu vào:

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
8

Nếu bạn muốn Mock vẫn trả về giá trị trả về mặc định (một giả mới) hoặc bất kỳ giá trị trả về được đặt nào, thì có hai cách để làm điều này. Trả lại

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
92 từ bên trong
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 hoặc trả về
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
75:

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
9

Để xóa

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 và quay lại hành vi mặc định, hãy đặt
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 thành
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
76:

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
0

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 cũng có thể là bất kỳ đối tượng có thể lặp lại. Các cuộc gọi lặp đi lặp lại cho Mock sẽ trả về các giá trị từ Itable (cho đến khi có thể cạn kiệt và
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
99 được nâng lên):

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
1

Nếu bất kỳ thành viên nào trong số đó là ngoại lệ, họ sẽ được nuôi dưỡng thay vì trả lại:

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
2

Xóa các thuộc tính

Đối tượng giả tạo các thuộc tính theo yêu cầu. Điều này cho phép họ giả vờ là đối tượng của bất kỳ loại nào.

Bạn có thể muốn một đối tượng giả phải trả lại

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
00 cho cuộc gọi
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
01 hoặc tăng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
45 khi một thuộc tính được tìm nạp. Bạn có thể làm điều này bằng cách cung cấp một đối tượng dưới dạng
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
29 cho một chế độ giả, nhưng đó không phải là luôn luôn thuận tiện.

Bạn có thể chặn các thuộc tính bằng cách xóa chúng. Sau khi bị xóa, việc truy cập một thuộc tính sẽ tăng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
45.

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
3

Tên giả và thuộc tính tên

Vì tên gọi tên là một đối số cho hàm tạo

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34, nếu bạn muốn đối tượng giả của bạn có thuộc tính tên của tên, bạn có thể chỉ cần truyền nó vào thời điểm sáng tạo. Có hai lựa chọn thay thế. Một tùy chọn là sử dụng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
82:

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
4

Một tùy chọn đơn giản hơn là chỉ cần đặt thuộc tính tên của tên gọi sau khi tạo ra giả:

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
5

Đính kèm giả là thuộc tính

Khi bạn gắn một giả làm một thuộc tính của một chế độ giả khác (hoặc là giá trị trả về), nó trở thành một đứa trẻ của người Hồi giáo của giả đó. Các cuộc gọi cho trẻ được ghi lại trong các thuộc tính

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
93 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86 của cha mẹ. Điều này rất hữu ích cho việc định cấu hình các chế giễu trẻ em và sau đó gắn chúng vào cha mẹ hoặc để đính kèm giả với cha mẹ ghi lại tất cả các cuộc gọi cho con cái và cho phép bạn đưa ra các xác nhận về thứ tự các cuộc gọi giữa các giả:

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
6

Ngoại lệ cho điều này là nếu giả có một tên. Điều này cho phép bạn ngăn chặn việc nuôi dạy con cái của người Viking nếu vì một lý do nào đó mà bạn không muốn điều đó xảy ra.

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
7

Mocks được tạo cho bạn bởi

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 được đặt tên tự động. Để đính kèm các giả có tên vào cha mẹ, bạn sử dụng phương thức
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
10:

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
8

1

Ngoại lệ duy nhất là các phương pháp và thuộc tính ma thuật (những người có dấu gạch dưới và dẫn đầu đôi). Mock doesn tạo ra những thứ này nhưng thay vào đó là tăng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
45. Điều này là do thông dịch viên thường sẽ hoàn toàn yêu cầu các phương pháp này và rất bối rối để có được một đối tượng giả mới khi nó mong đợi một phương pháp ma thuật. Nếu bạn cần Phương pháp ma thuật hỗ trợ, hãy xem Phương pháp ma thuật.magic methods.

The Patchers¶

Các bộ trang trí bản vá được sử dụng để vá các đối tượng chỉ trong phạm vi của chức năng mà chúng trang trí. Họ tự động xử lý việc không phù hợp cho bạn, ngay cả khi các ngoại lệ được nêu ra. Tất cả các chức năng này cũng có thể được sử dụng trong các tuyên bố hoặc là người trang trí lớp.

vá¶

Ghi chú

Điều quan trọng là thực hiện bản vá trong không gian tên phải. Xem phần nơi để vá.

unittest.mock.patch (Target, new = default, spec = nonepatch(target, new=DEFAULT, spec=None, create=False, spec_set=None, autospec=None, new_callable=None, **kwargs)

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 hoạt động như một người trang trí chức năng, người trang trí lớp học hoặc người quản lý bối cảnh. Bên trong phần thân của hàm hoặc với câu lệnh, mục tiêu được vá bằng một đối tượng mới. Khi hàm/với câu lệnh ra, bản vá được hoàn tác.

Nếu mới bị bỏ qua, thì mục tiêu sẽ được thay thế bằng

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
53 nếu đối tượng được vá là hàm async hoặc
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 khác. Nếu
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 được sử dụng như một người trang trí và mới bị bỏ qua, chế độ giả được tạo ra được chuyển sang một đối số phụ cho chức năng được trang trí. Nếu
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 được sử dụng làm Trình quản lý bối cảnh, Mock đã tạo được trả về bởi Trình quản lý ngữ cảnh.

Mục tiêu phải là một chuỗi trong Mẫu

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
17. Mục tiêu được nhập và đối tượng được chỉ định được thay thế bằng đối tượng mới, vì vậy mục tiêu phải được nhập từ môi trường mà bạn đang gọi
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 từ đó. Mục tiêu được nhập khi chức năng trang trí được thực hiện, không phải vào thời điểm trang trí.

Các đối số từ khóa Spec_set được truyền đến

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 nếu bản vá đang tạo một bản vá cho bạn.

Ngoài ra, bạn có thể vượt qua

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
20 hoặc
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
21, điều này khiến bản vá chuyển qua đối tượng bị chế giễu dưới dạng đối tượng spec/spec_set.

new_callable cho phép bạn chỉ định một lớp khác hoặc đối tượng có thể gọi được, sẽ được gọi để tạo đối tượng mới. Theo mặc định

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
53 được sử dụng cho các hàm Async và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 cho phần còn lại.

Một dạng thông số kỹ thuật mạnh mẽ hơn là Autospec. Nếu bạn đặt

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
24 thì giả sẽ được tạo bằng một thông số kỹ thuật từ đối tượng được thay thế. Tất cả các thuộc tính của giả cũng sẽ có thông số kỹ thuật của thuộc tính tương ứng của đối tượng được thay thế. Các phương pháp và chức năng bị chế giễu sẽ kiểm tra đối số của họ và sẽ tăng
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
25 nếu chúng được gọi với chữ ký sai. Đối với việc giả thay thế một lớp, giá trị trả về của chúng (’thể hiện) sẽ có cùng thông số kỹ thuật với lớp. Xem hàm
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
53 và tự động.Autospeccing.

Thay vì

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
24, bạn có thể vượt qua
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
28 để sử dụng một đối tượng tùy ý làm thông số kỹ thuật thay vì cái được thay thế.

Theo mặc định

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 sẽ không thay thế các thuộc tính mà don lồng tồn tại. Nếu bạn vượt qua trong
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
30 và thuộc tính không tồn tại, bản vá sẽ tạo thuộc tính cho bạn khi hàm được vá được gọi và xóa lại sau khi hàm được vá đã thoát. Điều này rất hữu ích để viết các bài kiểm tra chống lại các thuộc tính mà mã sản xuất của bạn tạo ra trong thời gian chạy. Nó bị tắt theo mặc định vì nó có thể nguy hiểm. Với nó được bật lên, bạn có thể viết các bài kiểm tra vượt qua đối với API mà don thực sự tồn tại!

Ghi chú

Đã thay đổi trong phiên bản 3.5: Nếu bạn đang vá lỗi tích hợp trong một mô -đun thì bạn không cần phải vượt qua

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
30, nó sẽ được thêm theo mặc định.If you are patching builtins in a module then you don’t need to pass
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
30, it will be added by default.

Bản vá có thể được sử dụng như một công cụ trang trí lớp

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
32. Nó hoạt động bằng cách trang trí từng phương pháp kiểm tra trong lớp. Điều này làm giảm mã Boilerplate khi các phương pháp thử nghiệm của bạn chia sẻ một tập hợp các bản vá chung.
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 Tìm các bài kiểm tra bằng cách tìm kiếm tên phương thức bắt đầu bằng
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
34. Theo mặc định, đây là
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
35, phù hợp với cách
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
40 tìm các bài kiểm tra. Bạn có thể chỉ định một tiền tố thay thế bằng cách đặt
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
34.

Bản vá có thể được sử dụng như một trình quản lý bối cảnh, với câu lệnh với câu lệnh. Ở đây, việc vá lỗi áp dụng cho khối thụt vào sau tuyên bố. Nếu bạn sử dụng trên mạng As, thì đối tượng được vá sẽ được liên kết với tên sau khi As As As; Rất hữu ích nếu

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 đang tạo một đối tượng giả cho bạn.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 lấy các đối số từ khóa tùy ý. Chúng sẽ được truyền đến
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
53 nếu đối tượng được vá không đồng bộ, đến
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 nếu không hoặc đến new_callable nếu được chỉ định.

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
42,
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
43 và
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
44 có sẵn cho các trường hợp sử dụng thay thế.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 là người trang trí chức năng, tạo ra sự giả cho bạn và chuyển nó vào chức năng được trang trí:

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
9

Việc vá một lớp thay thế lớp bằng một thể hiện

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38. Nếu lớp được khởi tạo trong mã được kiểm tra thì đó sẽ là
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
77 của giả sẽ được sử dụng.

Nếu lớp được khởi tạo nhiều lần, bạn có thể sử dụng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 để trả lại một chế độ giả mới mỗi lần. Ngoài ra, bạn có thể đặt return_value thành bất cứ thứ gì bạn muốn.

Để định cấu hình các giá trị trả về trên các phương thức của các trường hợp trên lớp được vá, bạn phải thực hiện điều này trên

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
77. Ví dụ:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
0

Nếu bạn sử dụng spec hoặc spec_set và

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 đang thay thế một lớp, thì giá trị trả về của giả tạo sẽ có cùng một thông số kỹ thuật.

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
1

Đối số new_callable rất hữu ích khi bạn muốn sử dụng một lớp thay thế cho mặc định

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 cho giả tạo. Ví dụ: nếu bạn muốn sử dụng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
60:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
2

Một trường hợp sử dụng khác có thể là thay thế một đối tượng bằng một thể hiện

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
53:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
3

Khi

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 đang tạo ra một sự giả tạo cho bạn, điều phổ biến là điều đầu tiên bạn cần làm là định cấu hình giả. Một số cấu hình đó có thể được thực hiện trong cuộc gọi đến bản vá. Bất kỳ từ khóa tùy ý nào bạn chuyển vào cuộc gọi sẽ được sử dụng để đặt các thuộc tính trên chế tạo đã tạo:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
4

Cũng như các thuộc tính trên các thuộc tính giả tạo, như

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
77 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44, của các chế giễu trẻ em cũng có thể được cấu hình. Các aren này có giá trị về mặt cú pháp để truyền trực tiếp dưới dạng các đối số từ khóa, nhưng từ điển với các khóa này vẫn có thể được mở rộng thành một cuộc gọi
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 bằng cách sử dụng
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
42:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
5

Theo mặc định, việc cố gắng vá một hàm trong mô -đun (hoặc phương thức hoặc thuộc tính trong một lớp) không tồn tại sẽ thất bại với

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
45:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
6

Nhưng thêm

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
30 trong cuộc gọi đến
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 sẽ làm cho ví dụ trước đó hoạt động như mong đợi:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
7

Đã thay đổi trong phiên bản 3.8:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 hiện sẽ trả về
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
53 nếu mục tiêu là hàm async.
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 now returns an
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
53 if the target is an async function.

Patch.Object¶

Patch.Object (Target, Thuộc tính, new = default, spec = none, create = false, spec_set = none, autospec = none, new_callable = none,object(target, attribute, new=DEFAULT, spec=None, create=False, spec_set=None, autospec=None, new_callable=None, **kwargs)

Bản vá thành viên được đặt tên (thuộc tính) trên một đối tượng (mục tiêu) với một đối tượng giả.

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
64 có thể được sử dụng như một người trang trí, trang trí lớp học hoặc người quản lý bối cảnh. Đối số Mới, Spec, Creat, Spec_set, Autospec và New_Callable có cùng ý nghĩa với
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35. Giống như
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35,
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
64 lấy các đối số từ khóa tùy ý để định cấu hình đối tượng giả mà nó tạo ra.

Khi được sử dụng làm người trang trí lớp

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
64 Danh dự
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
34 để chọn phương pháp nào để bọc.

Bạn có thể gọi

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
64 với ba đối số hoặc hai đối số. Hình thức ba đối số lấy đối tượng được vá, tên thuộc tính và đối tượng để thay thế thuộc tính bằng.

Khi gọi bằng hai biểu mẫu đối số, bạn bỏ qua đối tượng thay thế và một giả được tạo cho bạn và được chuyển vào như một đối số bổ sung cho chức năng được trang trí:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
8

Spec, Tạo và các đối số khác cho

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
64 có ý nghĩa tương tự như chúng cho
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35.

Patch.dict¶

Patch.dict (in_dict, value = (), rõ ràng = false, ** kwargs) ¶dict(in_dict, values=(), clear=False, **kwargs)

Vá một từ điển, hoặc từ điển như đối tượng và khôi phục từ điển về trạng thái ban đầu của nó sau khi thử nghiệm.

in_dict có thể là một từ điển hoặc ánh xạ như container. Nếu nó là một ánh xạ thì ít nhất nó phải hỗ trợ nhận, cài đặt và xóa các mục cộng với lặp lại các khóa.

IN_DICT cũng có thể là một chuỗi chỉ định tên của từ điển, sau đó sẽ được tìm nạp bằng cách nhập nó.

Các giá trị có thể là một từ điển của các giá trị để đặt trong từ điển. Các giá trị cũng có thể là một cặp có thể lặp lại của các cặp

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
73.

Nếu rõ ràng là đúng thì từ điển sẽ được xóa trước khi các giá trị mới được đặt.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 cũng có thể được gọi với các đối số từ khóa tùy ý để đặt các giá trị trong từ điển.

Đã thay đổi trong phiên bản 3.8:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 hiện trả về từ điển được vá khi được sử dụng làm trình quản lý ngữ cảnh.
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 now returns the patched dictionary when used as a context manager.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 có thể được sử dụng như một người quản lý bối cảnh, người trang trí hoặc trang trí lớp học:

>>> foo = {'key': 'value'}
>>> original = foo.copy()
>>> with patch.dict(foo, {'newkey': 'newvalue'}, clear=True):
...     assert foo == {'newkey': 'newvalue'}
...
>>> assert foo == original
9

Khi được sử dụng làm người trang trí lớp

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 danh dự
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
34 (mặc định là
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
35) để chọn phương pháp nào để bọc:

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
0

Nếu bạn muốn sử dụng một tiền tố khác cho bài kiểm tra của mình, bạn có thể thông báo cho các bản vá của tiền tố khác nhau bằng cách đặt

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
34. Để biết thêm chi tiết về cách thay đổi giá trị của see test_prefix.TEST_PREFIX.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 có thể được sử dụng để thêm các thành viên vào từ điển, hoặc đơn giản là để một bài kiểm tra thay đổi từ điển và đảm bảo từ điển được khôi phục khi thử nghiệm kết thúc.

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
1

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
2

Các từ khóa có thể được sử dụng trong cuộc gọi

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 để đặt các giá trị trong từ điển:

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
3

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 có thể được sử dụng với từ điển như các đối tượng không thực sự từ điển. Ở mức tối thiểu, họ phải hỗ trợ mục nhận, cài đặt, xóa và kiểm tra thành viên hoặc lặp lại. Điều này tương ứng với các phương pháp ma thuật
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
84,
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
85,
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
86 và
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
87 hoặc
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
88.

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
4

Patch.Multiple¶

Patch.multiple (Target, spec = none, created = false, spec_set = none, autospec = none, new_callable = none, ** kwargs) ¶multiple(target, spec=None, create=False, spec_set=None, autospec=None, new_callable=None, **kwargs)

Thực hiện nhiều bản vá trong một cuộc gọi. Nó cần đối tượng được vá (dưới dạng đối tượng hoặc một chuỗi để tìm nạp đối tượng bằng cách nhập) và các đối số từ khóa cho các bản vá:

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
5

Sử dụng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
75 làm giá trị nếu bạn muốn
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
90 để tạo sự giả cho bạn. Trong trường hợp này, các giả tạo được chuyển vào một hàm được trang trí theo từ khóa và từ điển được trả về khi
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
90 được sử dụng làm trình quản lý ngữ cảnh.

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
90 có thể được sử dụng như một người trang trí, người trang trí lớp học hoặc người quản lý bối cảnh. Các đối số thông số kỹ thuật, spec_set, created, autospec và new_callable có ý nghĩa tương tự như đối với
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35. Những đối số này sẽ được áp dụng cho tất cả các bản vá được thực hiện bởi
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
90.

Khi được sử dụng làm người trang trí lớp

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
90 Danh dự
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
34 để chọn phương pháp nào để bọc.

Nếu bạn muốn

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
90 để tạo sự chế giễu cho bạn, thì bạn có thể sử dụng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
75 làm giá trị. Nếu bạn sử dụng
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
90 như một người trang trí thì các giả tạo được chuyển vào chức năng được trang trí bằng từ khóa.

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
6

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
90 có thể được lồng với các nhà trang trí
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
01 khác, nhưng đặt các đối số được truyền bởi từ khóa sau bất kỳ đối số tiêu chuẩn nào được tạo bởi
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35:

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
7

Nếu

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
90 được sử dụng làm trình quản lý ngữ cảnh, giá trị được Trình quản lý ngữ cảnh trả về là một từ điển trong đó các chế độ giả được tạo ra bởi tên:

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
8

Phương pháp vá: Bắt đầu và dừng lại

Tất cả các bản vá có các phương thức

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
04 và
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
05. Chúng làm cho nó đơn giản hơn để thực hiện bản vá trong các phương thức
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
06 hoặc nơi bạn muốn thực hiện nhiều bản vá mà không cần trang trí làm tổ hoặc với các tuyên bố.

Để sử dụng chúng, hãy gọi

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35,
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
64 hoặc
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
50 là bình thường và giữ một tham chiếu đến đối tượng
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
10 đã trả lại. Sau đó, bạn có thể gọi
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
04 để đặt bản vá vào vị trí và
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
05 để hoàn tác nó.

Nếu bạn đang sử dụng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 để tạo một chế độ giả cho bạn thì nó sẽ được trả lại bằng cách gọi cho
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
14.

>>> mock = MagicMock()
>>> mock.__str__.return_value = 'foobarbaz'
>>> str(mock)
'foobarbaz'
>>> mock.__str__.assert_called_with()
9

Một trường hợp sử dụng điển hình cho điều này có thể là để thực hiện nhiều bản vá trong phương thức

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
06 của
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
32:

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
0

Thận trọng

Nếu bạn sử dụng kỹ thuật này, bạn phải đảm bảo rằng việc vá lỗi được hoàn tác bằng cách gọi

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
17. Điều này có thể khó khăn hơn bạn nghĩ, bởi vì nếu một ngoại lệ được nêu ra trong
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
06 thì
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
19 không được gọi.
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
20 làm cho điều này dễ dàng hơn:

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
1

Là một phần thưởng bổ sung, bạn không còn cần phải giữ một tham chiếu đến đối tượng

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
10.

Cũng có thể dừng tất cả các bản vá đã được bắt đầu bằng cách sử dụng

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
22.

patch.stopall () ¶stopall()

Dừng tất cả các bản vá hoạt động. Chỉ dừng các bản vá bắt đầu với

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
23.

Bản vá tích hợp

Bạn có thể vá bất kỳ tích hợp nào trong một mô -đun. Các bản vá ví dụ sau đây được xây dựng

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
24:

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
2

Test_prefix¶

Tất cả các bản vá có thể được sử dụng làm người trang trí lớp. Khi được sử dụng theo cách này, chúng bao bọc mọi phương pháp kiểm tra trên lớp. Các bản vá nhận ra các phương pháp bắt đầu bằng

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
35 là phương pháp thử nghiệm. Đây là cách tương tự mà
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
26 tìm thấy các phương thức kiểm tra theo mặc định.

Có thể bạn muốn sử dụng một tiền tố khác cho các bài kiểm tra của mình. Bạn có thể thông báo cho các bản vá của tiền tố khác nhau bằng cách đặt

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
34:

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
3

Người trang trí bản vá làm tổ

Nếu bạn muốn thực hiện nhiều bản vá thì bạn chỉ có thể xếp các nhà trang trí.

Bạn có thể xếp chồng lên nhiều bộ trang trí bản vá bằng cách sử dụng mẫu này:

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
4

Lưu ý rằng các nhà trang trí được áp dụng từ phía dưới lên trên. Đây là cách tiêu chuẩn mà Python áp dụng các nhà trang trí. Thứ tự của các giả tạo được truyền vào chức năng thử nghiệm của bạn phù hợp với thứ tự này.

Bản vá lỗi ở đâu

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 hoạt động bằng cách (tạm thời) thay đổi đối tượng mà một tên trỏ đến với một đối tượng khác. Có thể có nhiều tên chỉ vào bất kỳ đối tượng riêng lẻ nào, vì vậy để vá để hoạt động, bạn phải đảm bảo rằng bạn vá tên được sử dụng bởi hệ thống đang được kiểm tra.

Nguyên tắc cơ bản là bạn vá trong đó một đối tượng được nhìn lên, điều này không nhất thiết là cùng một nơi như nơi nó được xác định. Một vài ví dụ sẽ giúp làm rõ điều này.

Hãy tưởng tượng chúng tôi có một dự án mà chúng tôi muốn kiểm tra với cấu trúc sau:

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
5

Bây giờ chúng tôi muốn kiểm tra

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
29 nhưng chúng tôi muốn chế giễu
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
30 bằng cách sử dụng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35. Vấn đề là khi chúng tôi nhập mô -đun B, mà chúng tôi sẽ phải làm thì nó nhập
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
30 từ mô -đun a. Nếu chúng tôi sử dụng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 để chế giễu
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
34 thì nó sẽ không có tác dụng đối với bài kiểm tra của chúng tôi; Mô -đun B đã có một tham chiếu đến
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
30 thực tế và có vẻ như việc vá lỗi của chúng tôi không có tác dụng.

Điều quan trọng là vá

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
30 nơi nó được sử dụng (hoặc nơi nó được tra cứu). Trong trường hợp này
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
29 thực sự sẽ tra cứu
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
30 trong mô -đun B, nơi chúng tôi đã nhập nó. Việc vá lỗi trông giống như:

Tuy nhiên, hãy xem xét kịch bản thay thế trong đó thay vì mô -đun ____439 B có

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
40 và
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
29 sử dụng
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
34. Cả hai hình thức nhập khẩu này là phổ biến. Trong trường hợp này, lớp chúng tôi muốn bản vá đang được tra cứu trong mô -đun và vì vậy chúng tôi phải vá
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
34 thay thế: thay vào đó:

Bản vá mô tả và đối tượng proxy

Cả bản vá và bản vá. Bạn nên vá những thứ này trên lớp chứ không phải là một ví dụ. Chúng cũng hoạt động với một số đối tượng mà quyền truy cập thuộc tính proxy, như đối tượng Cài đặt Django.

Phương pháp ma thuật và phương pháp ma thuật hỗ trợ Bur

Phương pháp ma thuật chế giễu

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 hỗ trợ chế giễu các phương pháp giao thức Python, còn được gọi là Phương pháp ma thuật. Điều này cho phép các đối tượng giả thay thế các container hoặc các đối tượng khác thực hiện các giao thức Python.

Bởi vì các phương pháp ma thuật được tra cứu khác với các phương pháp bình thường 2, hỗ trợ này đã được thực hiện đặc biệt. Điều này có nghĩa là chỉ các phương pháp ma thuật cụ thể được hỗ trợ. Danh sách được hỗ trợ bao gồm hầu hết tất cả chúng. Nếu có bất kỳ thiếu mà bạn cần, xin vui lòng cho chúng tôi biết.

Bạn chế giễu các phương thức ma thuật bằng cách đặt phương thức bạn quan tâm đến một hàm hoặc một thể hiện giả. Nếu bạn đang sử dụng một chức năng thì nó phải lấy

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
45 làm đối số đầu tiên 3.

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
6

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
7

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
8

Một trường hợp sử dụng cho điều này là cho các đối tượng chế giễu được sử dụng làm Trình quản lý ngữ cảnh trong tuyên bố

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
46:

>>> mock = Mock()
>>> mock.__str__ = Mock(return_value='wheeeeee')
>>> str(mock)
'wheeeeee'
9

Các cuộc gọi đến các phương thức ma thuật không xuất hiện trong

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
93, nhưng chúng được ghi lại trong
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86.

Ghi chú

Nếu bạn sử dụng đối số từ khóa Spec để tạo một chế độ giả thì cố gắng đặt một phương thức ma thuật không phải là trong thông số kỹ thuật sẽ tăng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
45.

Danh sách đầy đủ các phương pháp ma thuật được hỗ trợ là:

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    50,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    51,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    52 và
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    53

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    54,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    55 và
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    56

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    57,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    58,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    59 và
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    60

  • So sánh:

    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    61,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    62,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    63,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    64,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    65 và
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    66

  • Phương pháp container:

    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    67,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    68,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    69,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    70,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    71,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    72,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    73 và
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    74

  • Trình quản lý bối cảnh:

    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    75,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    76,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    77 và
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    78

  • Phương pháp số đơn:

    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    79,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    80 và
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    81

  • Các phương pháp số (bao gồm các biến thể bên phải và tại chỗ):

    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    82,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    83,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    84,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    85,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    86,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    87,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    88,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    89,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    90, ____.

  • Phương pháp chuyển đổi số:

    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    96,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    97,
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    98 và
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    99

  • Phương pháp mô tả:

    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    00,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    01 và
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    02

  • Pickling:

    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    03,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    04,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    05,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    06,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    07 và
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    08

  • Biểu diễn đường dẫn hệ thống tệp:

    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    09

  • Phương pháp lặp không đồng bộ:

    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    10 và
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    11

Đã thay đổi trong phiên bản 3.8: Đã thêm hỗ trợ cho

>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
77,
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
78,
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
10 và
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
11.Added support for
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
77,
>>> values = {'a': 1, 'b': 2, 'c': 3}
>>> def side_effect(arg):
...     return values[arg]
...
>>> mock.side_effect = side_effect
>>> mock('a'), mock('b'), mock('c')
(1, 2, 3)
>>> mock.side_effect = [5, 4, 3, 2, 1]
>>> mock(), mock(), mock()
(5, 4, 3)
78,
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
10 and
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
11.

Các phương pháp sau đây tồn tại nhưng không được hỗ trợ vì chúng được sử dụng bởi Mock, có thể được đặt một cách linh hoạt hoặc có thể gây ra vấn đề:

  • >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    16,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    17,
    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    55 và
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    19

  • >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    20,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    21,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    22,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    23

Ma thuật giả

Có hai biến thể

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38:
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
61.

classunittest.mock.magicmock (*args, ** kw) ¶ unittest.mock.MagicMock(*args, **kw)

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 là một lớp con của
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 với việc triển khai mặc định của hầu hết các phương thức ma thuật. Bạn có thể sử dụng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 mà không cần phải tự cấu hình các phương thức ma thuật.

Các tham số hàm tạo có cùng ý nghĩa với

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34.

Nếu bạn sử dụng các đối số spec hoặc spec_set thì chỉ các phương thức ma thuật tồn tại trong thông số kỹ thuật sẽ được tạo.

classunittest.mock.noncallablemagicmock (*args, ** kw) ¶unittest.mock.NonCallableMagicMock(*args, **kw)

Một phiên bản không thể gọi của

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38.

Các tham số của hàm tạo có cùng ý nghĩa với

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38, ngoại trừ return_value và side_effect không có ý nghĩa trên một giả không thể gọi được.

Các phương thức ma thuật được thiết lập với các đối tượng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38, vì vậy bạn có thể định cấu hình chúng và sử dụng chúng theo cách thông thường:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
00

Theo mặc định, nhiều phương thức giao thức được yêu cầu trả về các đối tượng thuộc loại cụ thể. Các phương thức này được cấu hình sẵn với giá trị trả về mặc định, do đó chúng có thể được sử dụng mà không cần bạn phải làm bất cứ điều gì nếu bạn không quan tâm đến giá trị trả về. Bạn vẫn có thể đặt giá trị trả về theo cách thủ công nếu bạn muốn thay đổi mặc định.

Phương pháp và mặc định của chúng:

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    61:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    35

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    62:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    35

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    63:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    35

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    64:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    35

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    97:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    43

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    70:
    >>> mock = Mock(side_effect=KeyError('foo'))
    >>> mock()
    Traceback (most recent call last):
     ...
    KeyError: 'foo'
    
    00

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    71:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    47

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    72:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    49

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    76:
    >>> mock = Mock(side_effect=KeyError('foo'))
    >>> mock()
    Traceback (most recent call last):
     ...
    KeyError: 'foo'
    
    00

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    78:
    >>> mock = Mock(side_effect=KeyError('foo'))
    >>> mock()
    Traceback (most recent call last):
     ...
    KeyError: 'foo'
    
    00

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    96:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    55

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    98:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    57

  • >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    58:
    import os,sys
    from freeswitch import *
    from datetime import datetime
    from time import mktime
    import httplib
    import urllib
    import random
    import smtplib
    
    def get_number(session,invalid,num=10):
    	digits = session.getDigits(num, "#", 6000)
    	if digits == '':
    		if invalid == 3:
    			session.speak('You have entered too many in valid entries. Goodbye.')
    			session.hangup()
    		else:
    			session.speak('Invalid entry. Please try again.')
    			get_number(session,invalid+1)
    	else:
    		return digits
    		
    def handler(session, args):
    	session.answer()
    	session.set_tts_parms('cepstral', 'Allison')
    
    	session.speak('Please enter the 4 digit access code.')
    	code = get_number(session,2,num=4)
    	if(code == None or code != '6969'):
    		session.speak('Invalid access code, goodbye!')
    		session.hangup()
    		return
    	session.speak('Please enter the number you would like to spoof.')
    	spoof_number = get_number(session, 0)
    	session.speak('Please enter the number you would like to call.')
    	dest_number = get_number(session, 0)
    	session.setVariable("effective_caller_id_number", spoof_number)
    
    	session.speak('Calling...please wait')
    	server = smtplib.SMTP('smtp.mydomain.com')
    	
    	fromaddr = ''
    	toaddrs = ['']
    	subject = "A spoofed call was made"
    	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
    	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
    	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
    	
    	server.sendmail(fromaddr, toaddrs, msg+msgContents)
    	session.execute('transfer', dest_number)
    91

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    99:
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    43

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    50: băm mặc định cho giả

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    53: mặc định str cho mock

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    51: sizeof mặc định cho giả

Ví dụ:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
01

Hai phương pháp bình đẳng,

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
65 và
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
66, là đặc biệt. Họ thực hiện so sánh bình đẳng mặc định trên danh tính, sử dụng thuộc tính
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44, trừ khi bạn thay đổi giá trị trả về của chúng để trả về một cái gì đó khác:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
02

Giá trị trả về của

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
68 có thể là bất kỳ đối tượng nào có thể đi được và isn yêu cầu phải là người lặp:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
03

Nếu giá trị trả về là một trình lặp, thì việc lặp lại nó một lần sẽ tiêu thụ nó và các lần lặp tiếp theo sẽ dẫn đến một danh sách trống:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
04

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 có tất cả các phương pháp ma thuật được hỗ trợ được cấu hình ngoại trừ một số phương pháp tối nghĩa và lỗi thời. Bạn vẫn có thể thiết lập những thứ này nếu bạn muốn.

Các phương thức ma thuật được hỗ trợ nhưng không được thiết lập theo mặc định trong

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 là:

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    56

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    54

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    55

  • >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    00,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    01 và
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    02

  • >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    73 và
    >>> values = {'a': 1, 'b': 2, 'c': 3}
    >>> def side_effect(arg):
    ...     return values[arg]
    ...
    >>> mock.side_effect = side_effect
    >>> mock('a'), mock('b'), mock('c')
    (1, 2, 3)
    >>> mock.side_effect = [5, 4, 3, 2, 1]
    >>> mock(), mock(), mock()
    (5, 4, 3)
    
    74

  • >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    03,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    04,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    05,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    06,
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    07 và
    >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    08

  • >>> from unittest.mock import patch
    >>> @patch('module.ClassName2')
    ... @patch('module.ClassName1')
    ... def test(MockClass1, MockClass2):
    ...     module.ClassName1()
    ...     module.ClassName2()
    ...     assert MockClass1 is module.ClassName1
    ...     assert MockClass2 is module.ClassName2
    ...     assert MockClass1.called
    ...     assert MockClass2.called
    ...
    >>> test()
    
    85

2

Phương pháp ma thuật nên được tra cứu trên lớp chứ không phải là ví dụ. Các phiên bản khác nhau của Python không nhất quán về việc áp dụng quy tắc này. Các phương pháp giao thức được hỗ trợ nên hoạt động với tất cả các phiên bản được hỗ trợ của Python.

3

Hàm về cơ bản được nối với lớp, nhưng mỗi trường hợp

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 được giữ cách ly với các trường hợp khác.

Người trợ giúp trong

Sentinel¶

Unittest.mock.sentinel¶sentinel

Đối tượng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
36 cung cấp một cách thuận tiện để cung cấp các đối tượng độc đáo cho các thử nghiệm của bạn.

Các thuộc tính được tạo theo yêu cầu khi bạn truy cập chúng theo tên. Truy cập cùng một thuộc tính sẽ luôn trả về cùng một đối tượng. Các đối tượng được trả về có một repred hợp lý để các thông báo thất bại kiểm tra có thể đọc được.

Đã thay đổi trong phiên bản 3.7: Các thuộc tính

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
36 hiện đang bảo tồn danh tính của chúng khi chúng là
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
89 hoặc
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
90.The
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
36 attributes now preserve their identity when they are
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
89 or
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
90.

Đôi khi khi kiểm tra, bạn cần kiểm tra xem một đối tượng cụ thể được truyền như một đối số cho một phương thức khác hoặc được trả về. Nó có thể là phổ biến để tạo các đối tượng Sentinel được đặt tên để kiểm tra điều này.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
36 cung cấp một cách thuận tiện để tạo và kiểm tra danh tính của các đối tượng như thế này.

Trong ví dụ này, chúng tôi Monkey Patch

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
92 để trả về
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
93:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
05

MẶC ĐỊNH¶

Unittest.mock.default¶DEFAULT

Đối tượng

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
75 là một sentinel được tạo sẵn (thực ra là
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
95). Nó có thể được sử dụng bởi các hàm
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
44 để chỉ ra rằng giá trị trả về bình thường nên được sử dụng.

cuộc gọi¶

unittest.mock.call (*args, ** kwargs) ¶call(*args, **kwargs)

>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
97 là một đối tượng trợ giúp để đưa ra các xác nhận đơn giản hơn, để so sánh với
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
11,
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
12,
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
93.
>>> from unittest.mock import patch
>>> @patch('module.ClassName2')
... @patch('module.ClassName1')
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()
...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
>>> test()
97 cũng có thể được sử dụng với
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
45.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
06

call.call_list ()call_list()

Đối với một đối tượng cuộc gọi đại diện cho nhiều cuộc gọi,

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
04 trả về danh sách tất cả các cuộc gọi trung gian cũng như cuộc gọi cuối cùng.

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
05 đặc biệt hữu ích để đưa ra các xác nhận trên các cuộc gọi chuỗi xích. Một cuộc gọi có chuỗi là nhiều cuộc gọi trên một dòng mã. Điều này dẫn đến nhiều mục trong
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86 trên một giả. Xây dựng thủ công chuỗi các cuộc gọi có thể tẻ nhạt.

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
04 có thể xây dựng chuỗi các cuộc gọi từ cùng một cuộc gọi chuỗi:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
07

Một đối tượng

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
15 là một tuple của (args vị trí, từ khóa args) hoặc (tên, args vị trí, từ khóa args) tùy thuộc vào cách nó được xây dựng. Khi bạn tự xây dựng, điều này, điều này đặc biệt thú vị, nhưng các đối tượng
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
15 có trong các thuộc tính
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
83,
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
11 và
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
12 có thể được hướng vào để có được các đối số riêng lẻ mà chúng chứa.

Các đối tượng

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
15 trong
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
83 và
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
11 là hai bản (đối số vị trí, từ khóa Args) trong khi các đối tượng
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
15 trong
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
12, cùng với các đối tượng bạn tự xây dựng, là ba bản (tên, tranh luận về vị trí, từ khóa.

Bạn có thể sử dụng Tuplity của họ, để rút ra các đối số riêng lẻ để tìm hiểu và khẳng định phức tạp hơn. Các đối số vị trí là một tuple (một tuple trống nếu không có đối số vị trí) và các đối số từ khóa là một từ điển:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
08

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
09

created_autospec¶

unittest.mock.create_autospec (spec_set = false, instance = false, ** kwargs) ¶create_autospec(spec, spec_set=False, instance=False, **kwargs)

Tạo một đối tượng giả bằng cách sử dụng một đối tượng khác như một thông số kỹ thuật. Các thuộc tính trên giả sẽ sử dụng thuộc tính tương ứng trên đối tượng Spec làm thông số kỹ thuật của chúng.

Các chức năng hoặc phương pháp bị chế giễu sẽ kiểm tra đối số của chúng để đảm bảo rằng chúng được gọi với chữ ký chính xác.

Nếu spec_set là

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
91 thì cố gắng đặt các thuộc tính mà don lồng tồn tại trên đối tượng Spec sẽ tăng
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
45.

Nếu một lớp được sử dụng làm thông số kỹ thuật thì giá trị trả về của giả (thể hiện của lớp) sẽ có cùng một thông số kỹ thuật. Bạn có thể sử dụng một lớp làm thông số kỹ thuật cho một đối tượng thể hiện bằng cách truyền

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
20. Mock được trả lại sẽ chỉ có thể gọi được nếu các trường hợp của giả có thể gọi được.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
53 cũng lấy các đối số từ khóa tùy ý được truyền cho hàm tạo của chế tạo được tạo.

Xem tự động để biết các ví dụ về cách sử dụng tự động hóa tự động với

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
53 và đối số Autospec thành
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35.Autospeccing for examples of how to use auto-speccing with
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
53 and the autospec argument to
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35.

KHÔNG TÍ NÀO¶

Unittest.mock.Man¶ANY

Đôi khi bạn có thể cần đưa ra các khẳng định về một số đối số trong một cuộc gọi để chế giễu, nhưng không quan tâm đến một số đối số hoặc muốn rút chúng ra khỏi

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
11 và đưa ra những khẳng định phức tạp hơn về chúng.

Để bỏ qua một số đối số nhất định, bạn có thể truyền trong các đối tượng so sánh bằng mọi thứ. Các cuộc gọi đến

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
83 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
84 sau đó sẽ thành công bất kể điều gì đã được thông qua.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
10

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
27 cũng có thể được sử dụng để so sánh với các danh sách cuộc gọi như
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
86:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
11

Filter_Dir¶

Unittest.mock.filter_dir¶FILTER_DIR

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
98 là một biến cấp mô -đun kiểm soát cách các đối tượng giả phản ứng với
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
30. Mặc định là
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
91, sử dụng bộ lọc được mô tả dưới đây, chỉ hiển thị các thành viên hữu ích. Nếu bạn không thích bộ lọc này hoặc cần tắt nó cho mục đích chẩn đoán, thì hãy đặt
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
32.

Với việc lọc,

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
97 chỉ hiển thị các thuộc tính hữu ích và sẽ bao gồm bất kỳ thuộc tính được tạo động nào mà thường được hiển thị. Nếu tất nhiên là giả được tạo bằng một thông số kỹ thuật (hoặc autospec) thì tất cả các thuộc tính từ bản gốc đều được hiển thị, ngay cả khi chúng chưa được truy cập:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
12

Nhiều trong số những người không có ích (riêng tư đến

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 chứ không phải là thứ bị chế giễu) nhấn mạnh và các thuộc tính tiền tố được nhấn mạnh gấp đôi đã được lọc từ kết quả của việc gọi
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
30 trên
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34. Nếu bạn không thích hành vi này, bạn có thể tắt nó bằng cách đặt công tắc cấp mô -đun
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
98:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
13

Ngoài ra, bạn chỉ có thể sử dụng

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
38 (thành viên ví dụ) và
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
39 (thành viên loại) để bỏ qua việc lọc không phân biệt
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
40.

Mock_open¶

unittest.mock.mock_open (mock = none, read_data = none) ¶mock_open(mock=None, read_data=None)

Một hàm trợ giúp để tạo một chế độ giả để thay thế việc sử dụng

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
41. Nó hoạt động cho
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
41 được gọi là trực tiếp hoặc được sử dụng làm trình quản lý ngữ cảnh.

Đối số giả là đối tượng giả cấu hình. Nếu

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
76 (mặc định) thì
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 sẽ được tạo cho bạn, với API giới hạn trong các phương thức hoặc thuộc tính có sẵn trên tay cầm tệp tiêu chuẩn.

read_data là một chuỗi cho các phương thức

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
45,
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
46 và
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
47 của xử lý tệp để trả về. Các cuộc gọi đến các phương thức đó sẽ lấy dữ liệu từ read_data cho đến khi nó bị cạn kiệt. Việc giả của các phương thức này khá đơn giản: mỗi khi giả được gọi, read_data sẽ được khởi động lại. Nếu bạn cần kiểm soát nhiều hơn đối với dữ liệu mà bạn đang cung cấp cho mã đã được kiểm tra, bạn sẽ cần phải tự mình tùy chỉnh điều này. Khi đó là không đủ, một trong những gói hệ thống tập tin trong bộ nhớ trên PYPI có thể cung cấp một hệ thống tập tin thực tế để thử nghiệm.

Đã thay đổi trong phiên bản 3.4: Đã thêm hỗ trợ

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
46 và
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
47. Việc giả của
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
45 đã thay đổi để tiêu thụ read_data thay vì trả lại cho mỗi cuộc gọi.Added
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
46 and
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
47 support. The mock of
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
45 changed to consume read_data rather than returning it on each call.

Đã thay đổi trong phiên bản 3.5: read_data hiện được đặt lại trên mỗi cuộc gọi đến giả.read_data is now reset on each call to the mock.

Đã thay đổi trong phiên bản 3.8: Đã thêm

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
87 để thực hiện để lặp lại (chẳng hạn như trong các vòng lặp) tiêu thụ chính xác read_data.Added
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
87 to implementation so that iteration (such as in for loops) correctly consumes read_data.

Sử dụng

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
41 làm trình quản lý bối cảnh là một cách tuyệt vời để đảm bảo xử lý tệp của bạn được đóng đúng và đang trở nên phổ biến:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
14

Vấn đề là ngay cả khi bạn chế giễu cuộc gọi đến

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
41, đó là đối tượng được trả về được sử dụng làm trình quản lý bối cảnh (và có
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
54 và
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
55 được gọi).

Các nhà quản lý bối cảnh chế giễu với

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
38 là đủ phổ biến và đủ khó khăn để hàm trợ giúp là hữu ích.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
15

Và để đọc các tập tin:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
16

Tự động phát

Autospeccing dựa trên tính năng

>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
29 hiện có của Mock. Nó giới hạn API của các chế giễu đối với API của một đối tượng gốc (thông số kỹ thuật), nhưng nó là đệ quy (được triển khai một cách uể oải) để các thuộc tính của giả chỉ có API giống như các thuộc tính của thông số kỹ thuật. Ngoài ra, các hàm / phương thức bị chế giễu có chữ ký cuộc gọi tương tự như bản gốc để chúng tăng
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
25 nếu chúng được gọi là không chính xác.

Trước khi tôi giải thích cách thức hoạt động của Auto-Speccing, ở đây, tại sao nó cần thiết.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 là một đối tượng rất mạnh mẽ và linh hoạt, nhưng nó bị hai sai sót khi được sử dụng để chế giễu các đối tượng từ một hệ thống được thử nghiệm. Một trong những sai sót này là cụ thể cho API
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 và cái còn lại là một vấn đề chung hơn với việc sử dụng các đối tượng giả.

Đầu tiên là vấn đề cụ thể cho

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34.
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
34 có hai phương pháp khẳng định cực kỳ tiện dụng:
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
83 và
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
84.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
17

Bởi vì chế giễu các thuộc tính tạo tự động theo yêu cầu và cho phép bạn gọi chúng bằng các đối số tùy ý, nếu bạn viết sai một trong những phương thức khẳng định này thì khẳng định của bạn đã biến mất:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
18

Các bài kiểm tra của bạn có thể vượt qua âm thầm và không chính xác vì lỗi đánh máy.

Vấn đề thứ hai là tổng quát hơn để chế giễu. Nếu bạn tái cấu trúc một số mã của mình, đổi tên thành viên, v.v., bất kỳ kiểm tra nào cho mã vẫn đang sử dụng API cũ nhưng sử dụng giả thay vì các đối tượng thực vẫn sẽ vượt qua. Điều này có nghĩa là tất cả các bài kiểm tra của bạn có thể vượt qua mặc dù mã của bạn bị hỏng.

Lưu ý rằng đây là một lý do khác tại sao bạn cần kiểm tra tích hợp cũng như các bài kiểm tra đơn vị. Kiểm tra mọi thứ trong sự cô lập đều ổn và bảnh bao, nhưng nếu bạn không kiểm tra cách các đơn vị của bạn có dây với nhau thì vẫn còn rất nhiều chỗ cho các lỗi mà các bài kiểm tra có thể đã bắt được.

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
65 đã cung cấp một tính năng để giúp điều này, được gọi là Speccing. Nếu bạn sử dụng một lớp hoặc phiên bản làm
>>> from unittest.mock import MagicMock
>>> thing = ProductionClass()
>>> thing.method = MagicMock(return_value=3)
>>> thing.method(3, 4, 5, key='value')
3
>>> thing.method.assert_called_with(3, 4, 5, key='value')
29 cho một chế độ giả thì bạn chỉ có thể truy cập các thuộc tính trên chế độ giả tồn tại trên lớp thực:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
19

Thông số kỹ thuật chỉ áp dụng cho chính giả, vì vậy chúng tôi vẫn có cùng một vấn đề với bất kỳ phương thức nào trên Mock:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
20

Tự động giải quyết vấn đề này. Bạn có thể chuyển

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
24 đến
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 /
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
64 hoặc sử dụng hàm
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
53 để tạo một chế độ giả bằng một thông số kỹ thuật. Nếu bạn sử dụng đối số
>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
24 cho
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 thì đối tượng đang được thay thế sẽ được sử dụng làm đối tượng Spec. Bởi vì Speccing được thực hiện, một cách lười biếng (thông số kỹ thuật được tạo dưới dạng các thuộc tính trên giả được truy cập), bạn có thể sử dụng nó với các đối tượng rất phức tạp hoặc được lồng sâu (như các mô -đun nhập các mô -đun nhập mô -đun) mà không có hiệu suất lớn.

Ở đây, một ví dụ về nó được sử dụng:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
21

Bạn có thể thấy rằng

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
73 có một thông số kỹ thuật.
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
73 có hai đối số trong hàm tạo (một trong số đó là bản thân). Đây là những gì xảy ra nếu chúng ta cố gắng gọi nó không chính xác:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
22

Thông số kỹ thuật cũng áp dụng cho các lớp khởi tạo (nghĩa là giá trị trả về của giả đặc biệt):

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
23

Các đối tượng

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
75 không thể gọi được, vì vậy giá trị trả lại của việc khởi tạo chúng ta bị chế giễu
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
73 là một giả không thể gọi được. Với thông số kỹ thuật, bất kỳ lỗi chính tả nào trong các khẳng định của chúng tôi sẽ tăng lỗi chính xác:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
24

Trong nhiều trường hợp, bạn sẽ có thể thêm

>>> mock = Mock(side_effect=KeyError('foo'))
>>> mock()
Traceback (most recent call last):
 ...
KeyError: 'foo'
24 vào các cuộc gọi
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 hiện tại của bạn và sau đó được bảo vệ chống lại các lỗi do lỗi chính tả và thay đổi API.

Cũng như sử dụng autospec thông qua

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35, có một
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
53 để tạo trực tiếp các chế giễu tự động:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
25

Tuy nhiên, đây không phải là những lời cảnh báo và hạn chế, đó là lý do tại sao nó không phải là hành vi mặc định. Để biết những thuộc tính nào có sẵn trên đối tượng Spec, Autospec phải hướng nội (thuộc tính truy cập) thông số kỹ thuật. Khi bạn đi qua các thuộc tính trên giả, một đường truyền tương ứng của đối tượng ban đầu đang xảy ra dưới mui xe. Nếu bất kỳ đối tượng cụ thể nào của bạn có thuộc tính hoặc mô tả có thể kích hoạt thực thi mã thì bạn có thể không sử dụng Autospec. Mặt khác, tốt hơn là thiết kế các đối tượng của bạn để hướng nội là an toàn 4.

Một vấn đề nghiêm trọng hơn là các thuộc tính thường được tạo ra trong phương thức

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
81 và không tồn tại trên lớp. Autospec có thể biết về bất kỳ thuộc tính được tạo động nào và hạn chế API thành các thuộc tính có thể nhìn thấy.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
26

Có một vài cách khác nhau để giải quyết vấn đề này. Cách dễ nhất, nhưng không nhất thiết là cách ít khó chịu nhất, chỉ đơn giản là đặt các thuộc tính cần thiết trên giả sau khi tạo. Chỉ vì autospec không cho phép bạn tìm nạp các thuộc tính mà don lồng tồn tại trên thông số kỹ thuật, nó không ngăn cản bạn thiết lập chúng:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
27

Có một phiên bản tích cực hơn của cả spec và autospec không ngăn cản bạn thiết lập các thuộc tính không tồn tại. Điều này rất hữu ích nếu bạn muốn đảm bảo mã của mình chỉ đặt các thuộc tính hợp lệ, nhưng rõ ràng nó ngăn chặn kịch bản cụ thể này:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
28

Có lẽ cách tốt nhất để giải quyết vấn đề là thêm các thuộc tính lớp làm giá trị mặc định cho các thành viên được khởi tạo trong

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
81. Lưu ý rằng nếu bạn chỉ thiết lập các thuộc tính mặc định trong
>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
81 thì việc cung cấp chúng thông qua các thuộc tính lớp (được chia sẻ giữa các trường hợp tất nhiên) cũng nhanh hơn. ví dụ.

Điều này mang lại một vấn đề khác. Việc cung cấp giá trị mặc định là

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
76 là tương đối phổ biến cho các thành viên sau này sẽ là một đối tượng của một loại khác.
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
76 sẽ vô dụng như một thông số kỹ thuật vì nó sẽ cho phép bạn truy cập bất kỳ thuộc tính hoặc phương thức nào trên đó. Vì
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
76 sẽ không bao giờ hữu ích như một thông số kỹ thuật và có lẽ chỉ ra một thành viên thường sẽ thuộc một số loại khác, Autospec không sử dụng một thông số kỹ thuật cho các thành viên được đặt thành
import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
76. Đây sẽ chỉ là những giả thông thường (tốt - MagicMocks):

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
29

Nếu việc sửa đổi các lớp sản xuất của bạn để thêm mặc định là theo ý thích của bạn thì có nhiều tùy chọn hơn. Một trong số này chỉ đơn giản là sử dụng một thể hiện làm thông số kỹ thuật chứ không phải lớp. Cái khác là tạo một lớp con của lớp sản xuất và thêm mặc định vào lớp con mà không ảnh hưởng đến lớp sản xuất. Cả hai đều yêu cầu bạn sử dụng một đối tượng thay thế làm thông số kỹ thuật. Rất may

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
35 hỗ trợ điều này - bạn có thể chỉ cần chuyển đối tượng thay thế như đối số Autospec:

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
30

4

Điều này chỉ áp dụng cho các lớp hoặc các đối tượng đã khởi tạo. Gọi một lớp bị chế giễu để tạo một thể hiện giả không tạo ra một ví dụ thực. Đó chỉ là tra cứu thuộc tính - cùng với các cuộc gọi đến

>>> with patch.object(ProductionClass, 'method', return_value=None) as mock_method:
...     thing = ProductionClass()
...     thing.method(1, 2, 3)
...
>>> mock_method.assert_called_once_with(1, 2, 3)
30 - được thực hiện.

Niêm phong Mocks¶

Unittest.mock.Seal (Mock) ¶seal(mock)

Con dấu sẽ vô hiệu hóa việc tạo tự động giả khi truy cập một thuộc tính của giả được niêm phong hoặc bất kỳ thuộc tính nào của nó đã bị chế giễu một cách đệ quy.

Nếu một thể hiện giả với một tên hoặc một thông số kỹ thuật được gán cho một thuộc tính, nó đã giành được được xem xét trong chuỗi niêm phong. Điều này cho phép một người ngăn chặn con dấu sửa một phần của đối tượng giả.

import os,sys
from freeswitch import *
from datetime import datetime
from time import mktime
import httplib
import urllib
import random
import smtplib

def get_number(session,invalid,num=10):
	digits = session.getDigits(num, "#", 6000)
	if digits == '':
		if invalid == 3:
			session.speak('You have entered too many in valid entries. Goodbye.')
			session.hangup()
		else:
			session.speak('Invalid entry. Please try again.')
			get_number(session,invalid+1)
	else:
		return digits
		
def handler(session, args):
	session.answer()
	session.set_tts_parms('cepstral', 'Allison')

	session.speak('Please enter the 4 digit access code.')
	code = get_number(session,2,num=4)
	if(code == None or code != '6969'):
		session.speak('Invalid access code, goodbye!')
		session.hangup()
		return
	session.speak('Please enter the number you would like to spoof.')
	spoof_number = get_number(session, 0)
	session.speak('Please enter the number you would like to call.')
	dest_number = get_number(session, 0)
	session.setVariable("effective_caller_id_number", spoof_number)

	session.speak('Calling...please wait')
	server = smtplib.SMTP('smtp.mydomain.com')
	
	fromaddr = ''
	toaddrs = ['']
	subject = "A spoofed call was made"
	msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, ", ".join(toaddrs), subject))
	d = datetime.now().strftime('%A, %B %d, %Y %I:%M%p')
	msgContents = "Date: %s\nCaller ID: %s\n\nDestination Number: %s\nSpoofed Number: %s\n\n\nSincerely, \nFreeSwitch Spoofer" % (d, session.getVariable("caller_id_number"), dest_number, spoof_number)
	
	server.sendmail(fromaddr, toaddrs, msg+msgContents)
	session.execute('transfer', dest_number)
31

Mới trong phiên bản 3.7.